0
你好,请找到下面简单的宏代码错误用c宏扩展
#include <iostream>
#define INCL #include
INCL <stdlib.h>
int main()
{
std::cout << "Hello, world\n" << std::endl ;
return 0;
}
当我编译的代码,则抛出 错误:流浪A#a在程序
请帮助。
感谢
你好,请找到下面简单的宏代码错误用c宏扩展
#include <iostream>
#define INCL #include
INCL <stdlib.h>
int main()
{
std::cout << "Hello, world\n" << std::endl ;
return 0;
}
当我编译的代码,则抛出 错误:流浪A#a在程序
请帮助。
感谢
C++编译包括以下阶段:
的一点是,您尝试使用预处理器(阶段1)预处理自己,这是行不通的。宏只能用于生成编译器的代码。您不能将预处理器指令包装到预处理器宏中。
预处理器宏不能创建其他预处理器宏。在这方面你只是运气不好。
但是,您可以使用宏作为包括参数:
#define FOO(x) "/usr/lib/" #x
#include FOO(mylib.h)
嘿感谢,我要在这里提到相同的代码是在Intel编译罚款。然而,我们将代码从intel编译器移到GCC编译器,我们遇到上面提到的错误。 我找不到任何文件提到#不能用于宏的开始。不过,我发现提及'##'的文件不能在开始或结束时使用 – NoName 2012-04-16 11:02:03