当我搜索 的含义时__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;
}
此代码根据其编译方式给出不同的输出。但我不太了解这两条粗线。
- 如果我将这两行合并为一行,为什么会出错:
#define TO_LITERAL(text) #text
- 第二行的#text是什么意思?
太感谢了