如何在 C 中定义宏的宏?
How to define macro of macros in C?
是否可以在C中定义宏的宏?通常,宏定义字符串的主体包含语言的运算符。
但是有时需要在宏的主体中描述条件宏,就像在宏汇编程序中所做的那样。我该怎么做?
(1) 您可以定义一个宏的宏,就像在包含另一个宏的宏中一样。
(2) 但是,您不能 定义像#define INCLUDE #define STDH include <stdio.h>
.
这样的宏的宏
这里提供一个非常简单的基于宏的Hello World程序(针对第一种情况)。这里,MAIN
是包含宏 HELLOWORLD
.
的宏
#include <stdio.h>
#define HELLOWORLD printf("Hello, World!") // Macro
#define MAIN int main() { HELLOWORLD; return 0; } // Macro containing HELLOWORLD macro
MAIN
被预处理为
#include <stdio.h>
int main() {
HELLOWORLD;
return 0;
}
然后预处理为
#include <stdio.h>
int main() {
printf("Hello, World!");
return 0;
}
是否可以在C中定义宏的宏?通常,宏定义字符串的主体包含语言的运算符。
但是有时需要在宏的主体中描述条件宏,就像在宏汇编程序中所做的那样。我该怎么做?
(1) 您可以定义一个宏的宏,就像在包含另一个宏的宏中一样。
(2) 但是,您不能 定义像#define INCLUDE #define STDH include <stdio.h>
.
这里提供一个非常简单的基于宏的Hello World程序(针对第一种情况)。这里,MAIN
是包含宏 HELLOWORLD
.
#include <stdio.h>
#define HELLOWORLD printf("Hello, World!") // Macro
#define MAIN int main() { HELLOWORLD; return 0; } // Macro containing HELLOWORLD macro
MAIN
被预处理为
#include <stdio.h>
int main() {
HELLOWORLD;
return 0;
}
然后预处理为
#include <stdio.h>
int main() {
printf("Hello, World!");
return 0;
}