c宏扩展错误

时间:2012-04-16 10:11:46

标签: c++ macros

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

#include <iostream>

#define INCL    #include

INCL <stdlib.h>

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

    return 0;
}

当我编译代码时它会抛出 错误:在程序中迷路â#â€

请帮忙。

由于

2 个答案:

答案 0 :(得分:1)

预处理器宏无法创建其他预处理器宏。在这方面你只是运气不好。

但是,可以使用宏作为include参数:

#define FOO(x) "/usr/lib/" #x
#include FOO(mylib.h)

答案 1 :(得分:0)

C ++构建包含以下几个阶段:

  1. 预处理(宏扩展)
  2. 编译
  3. 链接
  4. 关键是你尝试使用预处理器(阶段1)来预处理自身,这是行不通的。宏只能用于生成编译器的代码。您无法将预处理程序指令包装到预处理器宏中。