根据我之前学习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 typedefis。
您可以要求编译器输出预处理的结果,例如 withg++ -C -E但没有简单的方法要求它输出using