#include <stdio.h>
#include<stdlib.h>
#define LIST.H onus;
int main ()
{
char *p,*s;
printf(" LIST.H ");
}
Run Code Online (Sandbox Code Playgroud)
我希望LIST.H打印onus
出来.但这不会发生.编译后我收到警告
temp.c:3:13: warning: missing whitespace after the macro name
Run Code Online (Sandbox Code Playgroud)
输出是LIST.H而不是onus.如何通过上面的宏打印所需的东西?
更新
我希望输出onus
与字符串前后的一个空格一样.
宏名称不能包含.
在其中.这就是为什么你得到警告:
warning: missing whitespace after the macro name
在LIST
它需要一个空间之后,但它得到一个.
代替.
此外,当宏名称在字符串内(之间"string"
)时,它不会被宏定义替换.
你可以这样做:
#define LISTH "onus"
// and then
printf(LISTH);
Run Code Online (Sandbox Code Playgroud)
预处理器将转换为:
printf("onus");
Run Code Online (Sandbox Code Playgroud)
如果你这样做:
#define LISTH "onus";
Run Code Online (Sandbox Code Playgroud)
预处理器将其转换为:
printf("onus";);
Run Code Online (Sandbox Code Playgroud)
哪个不会编译.