printf("LIST.H")其中LIST.H是一个宏

Reg*_*ser 0 c macros printf

#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与字符串前后的一个空格一样.

ins*_*ity 5

宏名称不能包含.在其中.这就是为什么你得到警告: warning: missing whitespace after the macro nameLIST它需要一个空间之后,但它得到一个.代替.

此外,当宏名称在字符串内(之间"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)

哪个不会编译.