问题标签 [conditional-compilation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1740 浏览

iphone - #ifdef 用于版本控制的宏

我使用宏来区分版本,但我无法强制它正常工作。我用了:

无论我使用什么版本 - 总是只调用其中一行。并且始终定义 __IPHONE_4_0。有任何想法吗?

最好的问候, 德米特里 M。

0 投票
2 回答
2701 浏览

java - 使用 Java 和 ant 进行条件编译

我正在使用的软件有问题。

我们通过 JNA 访问 Windows 系统调用,我们必须定义一些 Windows 结构(扩展 JNA 结构的 Java 类)才能访问它们。

应用程序必须使用 32 位和 64 位架构,但结构的问题是它们中的属性会根据系统架构而变化(例如从 int 到 long)。

有没有一种简单(和理智)的方法来使用 ant 在 Java 中进行条件编译 a-la #ifdef?有没有其他方法可以实现这种有条件的#ifdef?

我们正在考虑的另一种方法是创建一个通用接口,为 32 位和 64 位创建两个不同的结构,然后用一些 if-else 处理不同的情况。

谢谢。

0 投票
1 回答
1246 浏览

c# - 条件调试 - 它仍然编译成 RELEASE 代码吗?

我知道如果我将代码标记为 DEBUG 代码,它将不会在 RELEASE 模式下运行,但它仍然会被编译成程序集吗?我只是想确保我的程序集不会因额外的方法而臃肿。

0 投票
2 回答
3634 浏览

c# - C# #if / #ifdef 语法无法编译,为什么?

为什么下面的代码无法编译(片段)?

0 投票
1 回答
972 浏览

ocaml - OCaml 中的条件编译

假设我有一个很长的算法,我希望可以选择详细地对其进行调试。到目前为止,我只是if verbose then printf "whatever"在代码周围添加了很多,但是如果我不想让它处于详细模式,这会迫使代码执行许多无用的测试。

有没有办法获得一个简单的条件编译,如果设置了标志,它可以忽略 printf 行?

例如,我可以在 C 中使用#IFDEF DEBUG printf .. #ENDIF

0 投票
1 回答
997 浏览

cocoa - 如何使用有条件编译的 NSLog 替换来避免“未使用的变量”编译器警告?

这来自我对NSLog(). 的一个关键特性BetterLog()是,NSLog()对于发布和分发构建,替换编译为空。建议的解决方案(例如,请参阅是否真的不应该在生产代码上使用 NSLog()?)是定义一个预处理器符号来控制BetterLog()取决于构建类型的定义。通常:

whereDEBUG_MODE将被定义为仅用于调试构建的预处理器符号。

但是,在许多情况下,即使用中间变量构建日志记录语句时,结果是未使用变量的编译器警告。这是一个例子:

这里所有三个字符串都会产生编译器警告。我讨厌编译器警告。

当然,如果不以某种方式有条件地包含变量声明本身,就不可能避免。我做了以下尝试,但没有奏效:

我不是简单地只DEBUG_MODE在调试模式下定义,而是一直定义它,调试模式下的值为 1,发布模式下的值为 0。

然后我尝试利用编译器死代码剥离优化:

代码没问题:它在发布模式下被正确剥离。然而编译器仍然会发出未使用的变量警告。

所以问题是:有没有可能比丑陋的做得更好:

0 投票
2 回答
731 浏览

c++ - 在英特尔 C++ 上检测 C++0x 模式?

编译时英特尔 C++ 是否预定义了一些宏Qstd=c++0x?像 __GXX_EXPERIMENTAL_CXX0X__在 GCC 中的东西?__cplusplus还在199711

有什么方法可以检测 C++0x 编译?

0 投票
7 回答
9477 浏览

c# - C# 中条件编译的替代方案

在 C# 中使用条件编译代码的替代方法是什么?

我有一个类有很多基于# ifdef 的代码。一段时间后我的代码不可读。

寻找重构技术以用于更好的可读性和维护具有许多#ifdefs的代码

0 投票
2 回答
2419 浏览

conditional - Cython 基于外部值的条件编译

我尝试从 Cython pxd 有条件地编译(或生成)c 代码。我读到我可以 DEF 定义 aa 值和 IF 根据其值有条件地生成,但是我怎样才能从 pxd 文件外部获取此值?

具体来说,这两个案例现在对我来说很有趣:

  • 给 Cython 一些命令行定义,最好通过 Cython.Distutils setuptools 方式
  • extern-ed C 头文件定义了一些值,并根据该值有条件地使用 Cython 定义(现在可能不可能?)

谢谢

0 投票
2 回答
1859 浏览

c# - Visual Studio C# 项目:如何在 .csproj 中放置条件引用?

我正在开发一个开源项目(Logbus-ng),我需要以一种适用于 Windows 和 Mono 的方式实现由控制台应用程序生成的 Web服务

目前,感谢 MSDN Magazine 的教程,我在 Windows 上成功地做到了这一点。控制台应用程序可以生成自己的 Web 服务器,并实际上向外部打开 Web 服务接口。问题是这在 Mono 中不起作用,合理的原因是 Mono 错误。

与 Mono 开发人员聊天时,他们建议我使用 Mono.XSP 程序集来启用 ASP.NET 管道进入控制台应用程序,因此我想我将根据配置使用Web 服务激活器的不同实现。

现在我的问题是:因为 Mono.XSP 在所有 Mono 发行版的 GAC 中都可用(即在 Linux 下使用 xbuild 时),但在 Windows 中不可用,除非有人将它安装到 GAC 中,而且我不想发布Mono。 XSP 与我的软件,如果他们不需要它(即如果在 Windows 下编译),也不会强迫某人安装 Mono,我可以在 GAC 中设置对 Mono.XSP 程序集的引用,该引用仅在启用 MONO 编译标志时启用? 启用此标志后,我的代码显然将引用 Mono.XSP 而不是上面链接的教程中介绍的 HttpListenLibrary,并且编译器将正确使用该引用。

先感谢您。