0

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

在 C++ 中,它向我介绍了一个新指令,即using,但为什么该指令会附加分号?我认为这就像我之前学习的指令一样,它不是一个声明?

4

2 回答 2

5

using不是预处理器指令。它被编译器正确地看到和分析。

您通常不在宏;末尾放置 a 的事实#define是因为它们被预处理器作为“简单”文本替换处理,例如:

#define SOMETHING "abcd";

...
   if (strcmp(thing, SOMETHING) == 0) { ... }
...

将是编译器错误,因为编译器会看到:

   if (strcmp(thing, "abcd";) == 0) { ... }
                       //  ^ invalid here
于 2011-10-25T05:27:48.143 回答
0

using可以被认为是一个声明,就像 eg typedefis。

您可以要求编译器输出预处理的结果,例如 withg++ -C -E但没有简单的方法要求它输出using

于 2011-10-25T05:31:22.837 回答