标签: preprocessor-directive

如何在各种编译器中定义__cplusplus指令?

我的编译器将其扩展为199711L.那是什么意思?我读到__cplusplus> 199711L表示C++ 11.这个宏有什么可能的扩展,它意味着什么?

c++ compiler-version preprocessor-directive

31
推荐指数
3
解决办法
2万
查看次数

#if preprocessor指令用于DEBUG以外的指令

我知道我可以通过这样做来使用预处理器指令来检查Debug/Release:

#if DEBUG
    //debug mode
#elif
    //release mode
#endif
Run Code Online (Sandbox Code Playgroud)

但是如何检查其他配置,比如Test.在VB中你可以这样做:

#If CONFIG = "Release" Then
    'Release mode
#ElseIf CONFIG = "Test" Then
    'Test mode
#ElseIf CONFIG = "Debug" Then
    'Debug mode
#End If
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是在C#中,我该如何检查测试模式?我有一些代码,如果我在调试和测试中,我想要执行,但不是在发布模式,所以具体来说,我需要一种方法来检查不在发布模式.在VB中我会这样做:

#If Not CONFIG = "Release" Then
    'Do something here for every configuration that is not Release
#End If
Run Code Online (Sandbox Code Playgroud)

.net c# preprocessor-directive

30
推荐指数
2
解决办法
2万
查看次数

#if 0 vs #if(1> 1)?任何线索

我正在使用遗留代码并发现:

#if (1 > 1)
//define some function
#endif
Run Code Online (Sandbox Code Playgroud)

不确定,这可能与更典型的任何不同#if 0,注释掉代码?有什么想法吗?

c c-preprocessor preprocessor-directive

30
推荐指数
1
解决办法
2728
查看次数

何时在.net中使用预处理程序指令?

我认为这是一个简单的问题所以我认为我错过了一些明显的东西.我真的没有使用预处理器指令,但我正在查看某人的代码,并且认为这是我应该熟悉的东西.

所以我看了msdn示例,它有代码:

#define DEBUG
// ...
#if DEBUG
    Console.WriteLine("Debug version");
#endif
Run Code Online (Sandbox Code Playgroud)

我的两个问题是:

  • 在上面的例子中,为什么他们定义DEBUG?如果你在debug v.发布模式下编译,我的印象是设置的吗?
  • 查看另一个具有#define MYTEST然后写入控制台的示例,具体取决于它是否"已定义",但这与仅使用变量有何不同?我在这里错过了什么?

.net c# c-preprocessor preprocessor-directive

24
推荐指数
4
解决办法
1万
查看次数

如何写#ifdef中的条件.用于分期.在目标c

我需要在此调用Staging中添加一个条件..

在这种情况下如何做到这一点.

  #ifdef MYAPP_PRODUCTION
        buildMode = @"Production";
    #else

    #ifdef MYAPP_RELEASE
        buildMode = @"Release";
    #else MYAPP_DEBUG
       buildMode = @"Debug";
    #endif
    #endif
Run Code Online (Sandbox Code Playgroud)

另一个是MyApp_Staging需要包含在这个if条件中如何做到这一点?

objective-c preprocessor-directive

24
推荐指数
3
解决办法
3万
查看次数

如何在Java中提供预处理程序指令

如何在Java中正确地从C#中提供以下功能?

[C#]

#define PRODUCTION //Change from sandbox to production to switch between both systems.

#if SANDBOX
    using NetSuite.com.netsuite.sandbox.webservices;
#endif

#if PRODUCTION
    using NetSuite.com.netsuite.webservices;
#endif
Run Code Online (Sandbox Code Playgroud)

java preprocessor-directive

24
推荐指数
2
解决办法
3万
查看次数

23
推荐指数
2
解决办法
3万
查看次数

C奇怪的宏语法

我找到了这个C代码示例,我绝对感到困惑:

#include <stdio.h>
#define M(a,b) a%:%:b

main()
{
  int a=1, b=2, ab[]={10,20}, c;
  printf( "%d", M(a,b)<:a:> );
  printf( "%d", M(a,b)<:a:>?a:b );
  printf( "%d", c=M(a,b)<:a:>?a:b );
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释这应该做什么吗?它甚至没有在Visual Studio中编译,但我在线运行(在ideone.com上)并打印2011,这也增加了混乱.

c macros preprocessor-directive

21
推荐指数
1
解决办法
1815
查看次数

是否可以定义另一个预处理器指令?

我一直在寻找代码高尔夫,并有一个想法尝试这个代码:

#define D #define 添加此行后,一切正常,但我将其扩展为:

#define D #define
D VALUE
Run Code Online (Sandbox Code Playgroud)

在这里我得到了5个编译错误.如果我D改成#define一切都很好,有人可以解释一下,为什么这段代码是非法的?

注意: 我使用的是VS2008编译器.

编辑: 经过一些答案,我看到我需要给出编译错误列表:

  1. 错误C2121:'#':无效字符:可能是宏扩展的结果
  2. 错误C2146:语法错误:缺少';' 在标识符"VALUE"之前
  3. 错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int
  4. 错误C2144:语法错误:'void'前面应加';'
  5. 错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int

第一个错误显示D不仅是define,还包括#.

c c++ c-preprocessor preprocessor-directive

20
推荐指数
4
解决办法
2217
查看次数

Visual C++ 2010中的预处理程序指令缩进

我经常发现自己处于需要缩进预处理程序指令的情况,例如其他代码(例如#if缩进if).它似乎是合法的,这是常识,它有时是一件好事,但Visual不会让它变得容易.

有没有办法阻止Visual C++ 2010编辑器每次我无辜地按下时将代码粘贴到左边#?并且不要使用自动缩进(CTRL + K,CTRL + F)来破坏预处理程序指令缩进?或者更好的是,像其他一样处理预处理器指令?

c++ indentation visual-c++-2010 c-preprocessor preprocessor-directive

19
推荐指数
3
解决办法
2784
查看次数