问题标签 [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.
java - 条件 Java 编译
我是一名长期 C++ 程序员,Java 新手。我正在 Eclipse 中开发一个 Java Blackberry 项目。问题 - 有没有办法在项目中引入不同的配置集,然后基于这些编译稍微不同的代码?
在 Visual Studio 中,我们有项目配置和#ifdef;我知道Java中没有#ifdef,但可能是文件级别的东西?
c# - 未定义条件编译符号
我无法让 Visual Studio 像我预期的那样运行。我创建了 2 个配置文件。一个定义了符号 FOO,另一个定义了符号 BAR。我有这个代码:
然后在另一个文件中我有
好吧,在我的应用程序中,我收到一个错误,即 MyClass.MyData 未定义。
#error test
此外,如果我将它放在 FOO 配置文件中并在之后输入类似的内容,#if FOO
那么它将出现构建错误,但如果我删除它,它会构建得很好,当我去运行它时,我会得到一个编译错误MyClass 不包含 MyData 的定义。此外,这是一个 ASP.Net Web 应用程序。
有人可以帮我弄清楚如何使用条件编译吗?它就像 Visual Studio 使用编译符号正确编译它一样,但是每当 ASP.Net 网络服务器执行它时,它会在没有任何符号的情况下重新编译它......但这只是没有任何意义为什么它会这样做......
编辑:如果我使用 FOO 或 BAR 配置文件并不重要,它们似乎都没有按照应有的方式定义 MyData 符号。
编辑2:
好的,这对复制很重要!!!在您的解决方案中创建一个新App_Code
文件夹,然后在其中添加一个 .cs 文件,然后将 MyClass 添加到其中。这将重现在空白项目中工作的错误。我实际上已将其简化为
似乎 Visual Studio 没有为 App_Code 内的常规 .cs 文件设置条件编译符号
c++ - 使用`#ifdef`或继承进行交叉编译更好吗?
按照我之前关于虚拟和多重继承的问题(在跨平台场景中) - 在阅读了一些答案之后,我想到我可以通过保留服务器和客户端类来简化我的模型,并将平台特定的类替换为#ifdefs(这是我最初要做的)。
使用这段代码会更简单吗?这意味着至少会有更少的文件!缺点是它创建了一个有点“丑陋”并且稍微难以阅读Foobar
的课程,因为到处#ifdefs
都是。#ifdef
请注意,我们的 Unix Foobar 源代码将永远不会传递给编译器,因此这与(因为我们还使用#ifdef
来决定要调用哪个平台特定的类)具有相同的效果。
注意:为了更简单的示例,省略了一些东西(ctor 等)。
更新:
对于那些想要了解更多关于这个问题的背景的人,我真的建议浏览相应的邮件列表线程。事情开始在第 3 篇文章中变得有趣起来。还有一个相关的代码提交,您可以在这里看到有问题的真实代码。
c - 自动编译所有 ifdef / ifndef 指令的工具
我的C项目使用预处理器指令来激活/停用某些功能。由于几天前在#ifdef
.
我们使用脚本来编译最常见的配置,但我正在寻找一种工具来确保编译所有内容(在我们的案例中测试不是问题,我们只想尽快检测到没有停止编译)。通常 ifdefs / ifndefs 是独立的,因此通常每个模块只需编译两次(所有符号已定义,所有符号均未定义)。但有时 ifdef 是嵌套的,因此必须多次编译这些模块。
你知道有什么工具可以搜索所有 ifdef / ifndef(也是嵌套的)并给出一个模块必须编译多少次(每个模块中定义一组预处理器符号)以确保每个源代码行由编译器分析?
c# - 条件属性
一个快速的 C# 问题,我想知道在我的项目 > Properties > Build 中,有一个检查"Define DEBUG constant",所以如果我检查它然后执行此操作,
看到它不是“DEBUG”,它是DEBUG常量。那么这会好吗?还是我必须在项目设置的条件编译符号中添加“调试” ?还是#define?
c - dprintf 的跨平台兼容性
Linux 有这个不错的功能dprintf
:
函数
dprintf()
andvdprintf()
(在 glibc2 库中找到)与 and 完全类似fprintf()
,vfprintf()
除了它们输出到文件描述符 fd 而不是给定流。
但是,正如同一来源指出的那样:
这些函数是 GNU 扩展,而不是 C 或 POSIX。显然,名字选错了。许多系统(如 MacOS)具有不兼容的函数
dprintf()
,通常称为 的调试版本printf()
,可能带有类似
其中第一个参数是调试级别(输出为 to
stderr
)。此外,dprintf()
(orDPRINTF
) 也是一个流行的调试宏名称printf
。因此,可能最好在旨在可移植的程序中避免使用此功能。
我的问题
如何进行设置以安全地调用dprintf
我想要的(如果存在),或者如果该函数不存在,则无法编译并显示一些合理的错误消息?我想我会做这样的事情:
但我不知道SOMETHING
应该是什么。我想我可以将它限制在 Linux 上,但我可以让它更宽松吗?
c# - 条件编译 - 逐步淘汰 C# 中的部分代码
我正在做一个项目,我需要为项目的一个阶段设计和使用一组类。
在随后的阶段,我们将不再需要这组类和方法。这些类和方法集将在整个应用程序中使用,因此如果我将它们作为任何其他类添加,我需要在不需要它们时手动删除它们。
在 C# 中有没有办法,以便我可以在类或实例化类的位置上设置属性,以避免实例化和基于属性值的方法调用。
类似的东西,设置
在这方面的任何帮助表示赞赏。
c# - 如何在 Visual Studio 中为不同的编译宏设置不同的资源?
我有一个字符串资源,它需要根据条件编译具有不同的值。
如何在 Visual Studio 2008 Professional 中为不同的编译宏设置不同的资源?
iphone - 在 XCode 中为多个目标编译时,我如何确保某些文件不会包含在一个目标中
我使用我能想到的每个关键字在stackoverflow上搜索了很长时间来解决这个问题。我正在为 iphone 编程,我的应用程序有一个精简版和付费版本。我按照这里的说明创建 iPhone 游戏/应用程序的精简版来复制目标。这行得通,现在我正在努力精简精简版。
主要问题?图片。精简版需要比付费版少几百张图片。所以,我在 XCode 中做了 2 个组。Xcode 中的一个“文件夹组” - 名为“FreeImages”,另一个名为“ProImages”。我希望所有素材都只包含在精简版应用程序中,所有素材和ProImages 都包含在付费应用程序中。我不在乎 XCode 将这些组视为虚拟文件夹。我将指令颠倒过来,并在 XCode“PLUS_VERSION”中设置了环境标志 (-D) 我希望 XCode 基本上执行以下操作:
任何人都知道从哪里开始告诉 XCode 有条件地将组的内容复制到目标中?
java - 可以用ant修改源代码吗?
我想在我的程序中进行条件编译。我知道,如果您声明一个公共静态最终布尔值,编译器将忽略未遍历的分支。是否可以在构建程序之前让 ant 目标更改变量?
例如,如果我有:
final public static boolean windows = false;
我想要两个 ant 目标:Windows 和 Mac。我希望命令
ant windows
将布尔值更改为 true,同时
ant mac
保持变量不变。
谢谢。