根据我之前学习 C 的知识,我知道像#include
,#define
之类的预处理程序指令不是一个声明,正如其名称所暗示的那样,它是编译程序之前的过程,因此我们无需在其末尾添加;
。
在C ++中,它向我介绍了一个新的using
指令,但为什么这个指令附加了一个分号?我认为这就像我之前的指令,我知道它不是一个声明吗?
答案 0 :(得分:5)
using
不是预处理程序指令。它由编译器正确看待和分析。
您经常不在;
宏的末尾放置#define
这一事实是因为它们被预处理器处理为“简单”文本替换,例如:
#define SOMETHING "abcd";
...
if (strcmp(thing, SOMETHING) == 0) { ... }
...
将是编译器错误,因为编译器会看到:
if (strcmp(thing, "abcd";) == 0) { ... }
// ^ invalid here
答案 1 :(得分:0)
using
可被视为声明,例如typedef
是。
您可以要求编译器输出预处理的结果,例如:使用g++ -C -E
,但没有简单的方法要求它输出using