0

当我搜索 的含义时__cplusplus,我发现了一段代码如下。

#include <stdio.h>

int main() {
#define TO_LITERAL(text) TO_LITERAL_(text)
#define TO_LITERAL_(text) #text
#ifndef __cplusplus
/* this translation unit is being treated as a C one */
    printf("a C program\n");
#else
// this translation unit is being treated as a C++ one
    printf("a C++ program\n__cplusplus expands to \""
          TO_LITERAL(__cplusplus) "\"\n");
#endif
    (void)getchar();
    return 0;
}

此代码根据其编译方式给出不同的输出。但我不太了解这两条粗线。

  1. 如果我将这两行合并为一行,为什么会出错:#define TO_LITERAL(text) #text
  2. 第二行的#text是什么意思?

太感谢了

4

0 回答 0