根据我之前学习C的知识,我知道预处理器指令如#include
,#define
不是语句,这就是为什么顾名思义,它是程序编译之前的过程,因此我们不需要在;
末尾附加 a它。
在 C++ 中,它向我介绍了一个新指令,即using
,但为什么该指令会附加分号?我认为这就像我之前学习的指令一样,它不是一个声明?
根据我之前学习C的知识,我知道预处理器指令如#include
,#define
不是语句,这就是为什么顾名思义,它是程序编译之前的过程,因此我们不需要在;
末尾附加 a它。
在 C++ 中,它向我介绍了一个新指令,即using
,但为什么该指令会附加分号?我认为这就像我之前学习的指令一样,它不是一个声明?
using
不是预处理器指令。它被编译器正确地看到和分析。
您通常不在宏;
末尾放置 a 的事实#define
是因为它们被预处理器作为“简单”文本替换处理,例如:
#define SOMETHING "abcd";
...
if (strcmp(thing, SOMETHING) == 0) { ... }
...
将是编译器错误,因为编译器会看到:
if (strcmp(thing, "abcd";) == 0) { ... }
// ^ invalid here
using
可以被认为是一个声明,就像 eg typedef
is。
您可以要求编译器输出预处理的结果,例如 withg++ -C -E
但没有简单的方法要求它输出using