C 宏扩展时出错

Error With c Macro expansion

本文关键字:出错 扩展      更新时间:2023-10-16

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

#include <iostream>
#define INCL    #include
INCL <stdlib.h>
int main()
{
    std::cout << "Hello, worldn" << std::endl ;
    return 0;
}

当我编译代码时,它抛出错误:程序中杂散 â#â

请帮忙。

谢谢

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

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

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

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

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

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