gcc (GCC) 4.7.2
c89
你好,函数宏与宏
我一直在寻找一个测试套件,我注意到这个函数宏声明如下:
#define MU_SUITE_START() char *msg = NULL
然而,没有任何真正的区别在做只是这个:
#define MU_SUITE_START char *msg = NULL
宏只是做文本替换,所以我不认为有将是任何性能问题。
使用CPP,我得到以下结果,因此这里没有什么特别。
函数宏
char *msg = __null;
马尔科
char *msg = __null;
只是一个侧面说明:是不是值得声明函数样的马可,不输入参数提供? 在这里我不传递任何参数 即
#define PRINT_MSG() printf("This is the message\n")
为什么用函数宏打扰,如果没有输入参数,是不是这更好的?
#define PRINT_MSG printf("This is the message\n")
非常感谢您的任何建议,
部分是可读性。如果它要表现得像一个函数,为什么不使它看起来像一个呢? – Mysticial
如果你要有一个类似于函数的宏,那么*请*将它包装在一个'do-while(false)'中,所以我不能这样做:'unsigned MU_SUITE_START()+ 10000;'实际上等待,在这里不起作用。更好的建议:不要使用宏。 – Pubby