0

嗨,请找到以下简单的宏代码

#include <iostream>

#define INCL    #include

INCL <stdlib.h>

int main()
{
    std::cout << "Hello, world\n" << std::endl ;

    return 0;
}

当我编译代码时它会抛出错误:程序中的流浪â#â

请帮忙。

谢谢

4

2 回答 2

2

预处理器宏不能创建其他预处理器宏。在这方面你只是不走运。

但是,您可以使用宏作为包含参数:

#define FOO(x) "/usr/lib/" #x
#include FOO(mylib.h)
于 2012-04-16T10:21:04.497 回答
0

C++ 构建包括以下阶段:

  1. 预处理(宏扩展)
  2. 编译
  3. 链接

关键是您尝试使用预处理器(第 1 阶段)对自身进行预处理,这是行不通的。宏只能用于生成编译器代码。您不能将预处理器指令包装到预处理器宏中。

于 2012-04-16T10:20:48.697 回答