我有一个 C++ 宏,其语法是我以前从未见过的:
#define ASSERT(a) \
if (! (a)) \
{ \
std::string c; \
c += " test(" #a ")";
}
能否请您解释一下 # 在这里的用法? 我想将宏放在静态函数中,但在此之前我想完全理解它的作用。
谢谢
最佳答案
在宏中使用 #
意味着宏参数将用引号括起来 ""
:
#define FOOBAR(x) #x
int main (int argc, char *argv[])
{
std::cout << FOOBAR(hello world what's up?) << std::endl;
}
输出
hello world what's up?
另一个例子
在下面我们显示了 foo.cpp 的内容,然后是预处理器运行后文件的样子:
:/tmp% cat foo.cpp
#define STR(X) #X
STR (hello world);
...
:/tmp% g++ -E foo.cpp # only run the preprocessor
# 1 "foo.cpp"
# 1 "<command-line>"
# 1 "foo.cpp"
"hello world";
在哪里可以阅读更多内容?
查看以下指向 cpp
(C 预处理器)文档中条目的链接:
关于c++ - 了解使用 # 的 C++ 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8587968/