【问题标题】:Preprocessor Directive "Using"预处理器指令“使用”
【发布时间】:2011-10-25 05:26:24
【问题描述】:

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

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

【问题讨论】:

    标签: c++ c-preprocessor preprocessor-directive


    【解决方案1】:

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

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

    #define SOMETHING "abcd";
    
    ...
       if (strcmp(thing, SOMETHING) == 0) { ... }
    ...
    

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

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

    【讨论】:

      【解决方案2】:

      using 可以被认为是一个声明,例如typedef 是。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 2015-09-29
        • 1970-01-01
        相关资源
        最近更新 更多