在 c++ 中,一个 Macro 就是一段代码的聚合。使用这个 macro 名称就代表着对应的代码段。

有两种常见的 macro:object 形式,function 形式。可以定义任意有效的字符作为 macro 名称,甚至是 c 关键词。

object 形式

object 形式的 macro 就是简单的使用一个 identifier 代替代码片段。使用 #define 定义一个 macro:

#define TESTINT 1024

void main() {
    int a = TESTINT;
    cout << a << endl;
}

//output:
//1024

也可以定义一个片段:

#define NUMBERS 1, 2, 3

void main() {
    int x[] = { NUMBERS };
    //int x[] = { 1, 2, 3 };这两句效果相同
}

也可以多层定义:

#define NUMBER1 1
#define NUMBER2 NUMBER1

以上示例中 NUMBER2 等于 NUMBER1。

function 形式

可以定义 function 形式的 macro,需要在定义中 macro 名称后加上圆括号()。例如:

#define lang_init()  c_init()

定义后就可以使用 lang_init() 来调用 c_init() 了,类似于 alias。

object 类型的 macro 可以和 function 类型的 macro 同名,区别就是有没有圆括号:

#define test 100
#define test() func()

void main() {
    int a = test;
    test();
}

以上就是对 macro 的简单介绍。

参考链接:
https://gcc.gnu.org/onlinedocs/cpp/Macros.html

标签: none

添加新评论