问题标签 [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 回答
331 浏览

configuration - 如何管理单个 Haskell 程序的多个配置?

Haskell世界中自动工具的替代品是什么?我希望能够在相同源代码的不同配置之间进行选择。

例如,在 Haskell 中至少有两种 MD5 实现:Data.Digest.OpenSSL.MD5Data.Digest.Pure.MD5. 我想以这样一种方式编写代码,它可以确定已经安装了哪个库,并且不需要安装另一个。

在 CI 中可以使用 Autotools/Scons/CMake + cpp。在 Python 中,我可以捕获ImportError. 我应该在 Haskell 中使用哪些工具?

0 投票
3 回答
204 浏览

c# - 你可以在编译过程中只包含某些表格吗

我们正在开发一个应用程序的两个版本。不是应用程序的精简版和标准版的意义上,其中一个版本将具有有限的功能等。我们实际上将在应用程序中显示不同类型的信息,具体取决于版本(这是我描述它的最佳方式涉及太多细节)。

为了区分我们考虑使用条件属性和#if 指令的两个版本的应用程序(如果有任何其他选项或比这两个更好的方法,我愿意提供建议)。经过一些研究和辩论,我们决定使用#if 方法,因为这不会在编译过程中包含不必要的代码(而条件属性只会删除对不满足条件的方法的调用,但仍然包括方法......如果我没记错的话)。我意识到这两者并不相互排斥,所以如果需要,我们总是可以混合搭配。

无论如何......我们现在想知道的是,是否有一种方法可以在编译期间包含某些 Windows 窗体,具体取决于我们正在编译的应用程序的版本。我们已经拆分了所有的逻辑,所以表单实际上只是表单,其中只有很少的代码(主要是调用处理所有业务逻辑的表单管理器类)。表单管理器类将包含其中的一些#if 语句,因此代码可以在应用程序的两个版本中重用,只要可能(而不是创建两个类并在类上放置条件属性......虽然也许这是我们应该考虑的)。

有人知道这样做的好方法吗?

TIA

更新:

只是我们实际决定做的一个仅供参考。我们将不同版本的表单放入单独的命名空间中,然后只需要在管理所有表单的类顶部的命名空间 using 语句周围使用 #if 语句。工作很顺利,而且工作量很小。

0 投票
2 回答
3063 浏览

c# - 条件引用

目前我们的 .net 代码不是特定于处理器的,但它取决于库 (Oracle/ODP.Net)。我们找到了一个解决方案,我们直接编辑 csproj 文件,并根据我们选择的构建配置将引用放入带有 Condition 子句的项目组。我们有 32 位调试/发布和 64 位调试/发布,并且正确的程序集是您构建该配置时的参考。

这在构建时或多或少地起作用,但它会导致 Visual Studio (2008) 中的各种古怪。最终结果是同一个程序集在引用下出现了四次,其中三个带有黄色感叹号。它还会生成一些我无法摆脱的 76 个警告。我们试图以 0 个警告为目标,因为我们想知道什么时候出现新警告,所以这有点问题。

是否有人知道条件引用的解决方案,使其看起来像单个引用(实际上是)并且不会在构建时填写我的警告?

0 投票
4 回答
9537 浏览

windows - 基于操作系统的C++条件编译

我想用 C++ 编写一个包含系统调用的跨平台函数。我可以检查哪些条件编译标志来确定代码正在为哪个操作系统编译?我主要对使用 Visual Studio 和 GCC 的 Windows 和 Linux 感兴趣。

我认为它应该看起来像这样:

0 投票
3 回答
229948 浏览

visual-studio - Visual Studio 中的发布模式和调试模式有什么区别?

可能重复:
.NET 中的调试与发布
调试/发布差异

构建项目时 Visual Studio 中的发布模式和调试模式有什么区别?

0 投票
1 回答
19238 浏览

visual-studio - 为什么 /clr 与 Visual Studio 中的 /mt 和 /mtd 不兼容?

谁能为我解释一下 /clr 如何以及为什么与 /mtd 不兼容?有什么替代方案?如果我使用 /md 或 /mdd 在内部会发生什么?

据我所知,我们不会同时使用 /clr 和 /mtd。有人可以解释是否有办法做到这一点?请解释一下 /clr 如何以及为什么与 Visual Studio 中的 /mt 和 /mtd 不兼容?

0 投票
1 回答
18170 浏览

visual-c++ - 如何在编译中使用 /NODEFAULTLIBS 选项?

我有一个解决方案资源管理器包含 2 个项目。对于我启用/clr的一个项目/mdd。对于父项目,我有/mtd并且没有 clr 支持。当我编译这个时,我得到两个链接器错误,包括以下一个:

链接警告链接 4098:默认库可能与使用 /NODEFAULTLIBS 库的其他库冲突

所以我的问题是如何/NODEFAULTLIBS在编译中使用。

提前致谢。

0 投票
1 回答
1129 浏览

visual-studio - 如何解决链接错误?

我有一个项目。它仅显示链接错误。

它显示 __getch alresdy defined evnthough 我忽略了特定的库 MSVCR80D.dll 它显示错误。

请在这方面帮助我.....

使用 /verbose 后:

0 投票
10 回答
5121 浏览

c - 编译关于函数是否可用的不同代码

Windows 仅提供直到 Windows Vista 的 GetTickCount,并且从该操作系统开始还提供 GetTickCount64。如何通过调用不同的函数来编译C程序?

如何让C编译器检查是否在包含的头文件中声明了一个函数,并根据该特定函数是否可用来编译代码的不同部分?

寻找工作示例文件而不仅仅是提示。

编辑:我在(64 位)Windows 7 RC 上使用 MinGW 的 gcc 3.4.5 尝试了以下操作,但没有帮助。如果这是 MinGW 问题,我该如何解决这个问题?

0 投票
1 回答
948 浏览

visual-studio - 在 COMReferences 上使用 MSBuild 条件

如何在我的 *.csproj 文件中为 COMReference指定条件?以下似乎不起作用:

我在 Visual Studio 2008 的 C# 项目中有一些 COM 引用。我希望它们在我处于调试时自动使用非隔离模​​式,但在我进行发布构建时自动切换到隔离模式。我想我可以通过在我的 *.csproj 文件中指定两个不同的 COMReferences 来实现这一点,它们是根据条件选择的。