繁体   English   中英

c宏扩展错误

[英]Error With c Macro expansion

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

#include <iostream>

#define INCL    #include

INCL <stdlib.h>

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

    return 0;
}

当我编译代码时,它将引发错误:程序中出现流浪“#”

请帮忙。

谢谢

预处理器宏无法创建其他预处理器宏。 您在这方面很不走运。

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

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

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

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

关键是您尝试使用预处理器(第1阶段)对其本身进行预处理,这将无法正常工作。 宏只能用于为编译器生成代码。 您不能将预处理器指令包装到预处理器宏中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM