【问题标题】:C++ preprocessing error in the code代码中的 C++ 预处理错误
【发布时间】:2010-05-13 00:27:40
【问题描述】:
    #include "iostream"
    #include "string"

    using namespace std;

    #define AA(bb) \
            string(::##bb);
    int main (int argc, char *argv[])
    {

            AA(aa);
    }

这给了我一堆错误,但我试图理解这个错误:

pre.cpp:11:1: 错误:粘贴“::”和“aa”没有给出有效的预处理令牌

有什么想法吗?

【问题讨论】:

    标签: c++ c-preprocessor


    【解决方案1】:

    :: 已经是一个单独的令牌,您显示的代码不需要## 令牌粘贴运算符。

    【讨论】:

      【解决方案2】:

      删除## 字符,因为它们在此上下文中是不允许的。 ## 是连接位以形成一个标记,但 :: 应该是一个标记,而 bb 应该是另一个单独的标记。

      【讨论】:

        【解决方案3】:

        您的代码没有意义,因为范围内没有符号 aa。也许您试图将参数字符串化到您的宏?如果是这样,你想要的是:

        #define AA(bb) string(#bb)
        

        这会将AA(aa) 转换为string("aa")

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多