C++ 预处理器指令;使用;

C++ 预处理器指令;使用;,c++,c-preprocessor,preprocessor-directive,C++,C Preprocessor,Preprocessor Directive,根据我以前学习C的知识,我知道像#include,#define这样的预处理器指令不是一个语句,这就是为什么顾名思义,它是在编译程序之前的过程,因此我们不需要附加在它的末尾 在C++中,它使用引入了一个新的指令,即,但是为什么这个指令附加分号?我想这就像我之前学习的指令一样,它不是一个语句。使用不是一个预处理器指令。它由编译器本身查看和分析 事实上,你经常不放一个是因为它们被预处理器处理为“简单”文本替换,例如: #define SOMETHING "abcd"; ... if (str

根据我以前学习C的知识,我知道像
#include
#define
这样的预处理器指令不是一个语句,这就是为什么顾名思义,它是在编译程序之前的过程,因此我们不需要附加
在它的末尾


<>在C++中,它使用引入了一个新的指令,即<代码>,但是为什么这个指令附加分号?我想这就像我之前学习的指令一样,它不是一个语句。

使用
不是一个预处理器指令。它由编译器本身查看和分析

事实上,你经常不放一个
#define
宏末尾的code>是因为它们被预处理器处理为“简单”文本替换,例如:

#define SOMETHING "abcd";

...
   if (strcmp(thing, SOMETHING) == 0) { ... }
...
将是编译器错误,因为编译器将看到:

   if (strcmp(thing, "abcd";) == 0) { ... }
                       //  ^ invalid here

使用
不是预处理器指令。它由编译器本身查看和分析

事实上,你经常不放一个
#define
宏末尾的code>是因为它们被预处理器处理为“简单”文本替换,例如:

#define SOMETHING "abcd";

...
   if (strcmp(thing, SOMETHING) == 0) { ... }
...
将是编译器错误,因为编译器将看到:

   if (strcmp(thing, "abcd";) == 0) { ... }
                       //  ^ invalid here

使用
可以被认为是一种声明,例如
typedef


您可以要求编译器输出预处理的结果,例如,使用
g++-C-e
,但是没有简单的方法要求它输出
使用
的效果。使用
可以被认为是一种声明,例如
typedef

您可以要求编译器输出预处理的结果,例如使用
g++-C-e
,但没有简单的方法要求它使用
输出
的效果