C/C++ 宏

宏的一些用法:
1、#和##
#符号把一个符号直接转换为字符串,例如:
#define STRING(x) #x
const char *str = STRING( test_string ); str的内容就是”test_string”,也就是说#会把其后的符号直接加上双引号。
符号会连接两个符号,从而产生新的符号(词法层次),例如:
#define SIGN( x ) INT_##x
int SIGN( 1 ); 宏被展开后将成为:int INT_1;
2、变参宏 可以使你自定义类似的宏
#define LOG( format, … ) printf( format, __VA_ARGS__ )
LOG( “%s %d”, str, count );     __VA_ARGS__是系统预定义宏,被自动替换为参数列表。
3、宏调用自己
为了防止宏无限递归展开,当宏展开遇到自己时,就停止展开。
#define TEST(X) (X+TEST(X))
则TEST(1) 最终会展开成1+TEST(1)

Categoriesc

Leave a Reply

Your email address will not be published. Required fields are marked *