c++ 宏中的... , __VA_ARGS__, __COUNTER__, #、##、#@

  1. ... (省略号)和 __VA_ARGS__

新的C99规范支持了可变参数的宏,省略号表示可变的参数,而__VA_ARGS__一般用于宏的右边表示被省略的参数

例如我们新建一个文件test_macro.cc

#define macro(a,...) \
std::cout << a <

然后下面的命令做预编译

gcc -E -P test_macro.cc -o result.cc 

即可得到宏的真实定义

std::cout << "kkk" <
  1.  #

把宏字符串话,换句话说就是把宏两两边加上“”,例如

#define macro2(a,...) \
std::cout << #a <

预编译结果是 

std::cout << "\"kkk\"" <

你可能感兴趣的:(C++,c++,开发语言)