标签: conditional-compilation

条件参考

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

这在构建时或多或少有效,但它会在Visual Studio(2008)中引起各种怪异.最终结果是相同的组件在引用下显示四次,三个具有黄色感叹号.它还会产生一些我无法摆脱的76个警告.我们试图针对0警告,因为我们想知道什么时候出现新警告,所以这有点问题.

是否有人知道条件引用的解决方案允许它看起来像一个引用(它确实是这样)并且在构建时没有填写我的警告?

c# reference conditional-compilation visual-studio-2008

6
推荐指数
1
解决办法
3040
查看次数

如何在单独的文件中定义条件编译符号(不是.csproj或app.config)

我们需要在类库项目中定义条件编译符号.这不应该在源代码管理中检查(它不适用于所有开发人员),因此应该在.csproj或app.config文件以外的其他位置定义它.怎么能实现这一目标?

.net conditional-compilation

6
推荐指数
2
解决办法
2799
查看次数

用于自动编译所有ifdef/ifndef指令的工具

我的C项目使用预处理程序指令来激活/停用某些功能.由于几天前发生的变化导致一些较不常见的配置不再编译,这并不罕见#ifdef.

我们使用脚本来编译最常见的配置,但我正在寻找一种工具来确保编译所有内容(在我们的情况下测试不是问题,我们只想检测ASAP没有停止编译).通常ifdefs/ifndefs是独立的,因此通常每个模块只需编译两次(所有符号都定义,都是未定义的).但有时ifdefs是嵌套的,所以这些模块必须编译更多次.

您知道搜索所有ifdef/ifndef(也是嵌套的)的任何工具,并给出了一个模块必须编译多少次(每个模块中要定义的预处理器符号集)以确保每个源代码行是由编译器分析的?

c conditional-compilation c-preprocessor

6
推荐指数
1
解决办法
2090
查看次数

条件DEBUG - 它是否仍然编译成RELEASE代码?

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

[Conditional(DEBUG)]
private void DoSomeLocalDebugging()
{
   //debugging
}
Run Code Online (Sandbox Code Playgroud)

c# debugging conditional-compilation visual-studio-2010

6
推荐指数
1
解决办法
1214
查看次数

为什么Xcode4在条件编译块中没有做任何语法高亮?

例:

#ifdef FREE_VERSION
    tf.text = @"Free";
    NSLog(@"FREE VERSION");
#else
    tf.text = @"Paid";
    NSLog(@"PAID VERSION");
#endif
Run Code Online (Sandbox Code Playgroud)

第一部分在Xcode中看起来很好.

    tf.text = @"Free";
    NSLog(@"FREE VERSION");
Run Code Online (Sandbox Code Playgroud)

语法突出显示.但是,第二部分不是:

tf.text = @"付费";

NSLog(@"PAID VERSION");

有没有像"不要在条件cimpilation代码的#else部分中进行语法高亮"这样的设置?

xcode objective-c conditional-compilation ios xcode4

6
推荐指数
1
解决办法
555
查看次数

"has_trivial_destructor"定义而不是"is_trivially_destructible"

在C++ 11标准的细化过程中,似乎is_trivially_destructible被认为是比has_trivial_destructor更好/更一致的名称.

这是一个相对较新的开发,因为我的g ++ 4.7.1仍然使用旧名称,并且已修复为符合4.8的标准:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52702

我一直懒得使用一个#if有利于我所使用的编译器:

#if TRIVIAL_DESTRUCTOR_TYPE_TRAIT_MATCHES_STANDARD
template<class T>
using is_trivially_destructible = std::is_trivially_destructible<T>;
#else
template<class T>
using is_trivially_destructible = std::has_trivial_destructor<T>;
#endif
Run Code Online (Sandbox Code Playgroud)

...但现在我正在尝试与4.8用户和其他编译器共享标准的源代码.是否有更好的技巧可以使情况检测更"自动"而不需要#define?

c++ g++ conditional-compilation type-traits c++11

6
推荐指数
1
解决办法
2929
查看次数

6
推荐指数
1
解决办法
8272
查看次数

使用带有宏的逻辑运算符

如果定义了两个宏中的任何一个,我想要包含一段代码

#ifdef MACRO1 || MACRO2

void foo()
{


}

#endif
Run Code Online (Sandbox Code Playgroud)

我如何在C中完成此操作?

c macros conditional-compilation

6
推荐指数
3
解决办法
5119
查看次数

#ifdef MACRO是否等同于评论

假设没有定义MACRO,这些是等价的

#ifdef MACRO
    Not valid C or C++ code
#endif

/*
    Not valid C or C++ code
*/
Run Code Online (Sandbox Code Playgroud)

在GCC 4.7.1中,它似乎是等效的,但是有更多的预处理器吗?

c comments conditional-compilation c-preprocessor

6
推荐指数
3
解决办法
9381
查看次数

#ifdef WIN32 #elif WIN64 #endif

我遇到了一些示例代码,如下所示:

#ifdef WIN32
   ...
#elif WIN64
   ...
#endif
Run Code Online (Sandbox Code Playgroud)

在一个#ifdef块中,它实际上是合法使用#elif的意思#elif defined

conditional-compilation c-preprocessor

6
推荐指数
1
解决办法
3663
查看次数