我有一个C++宏,其语法是我以前从未见过的:
#define ASSERT(a) \
if (! (a)) \
{ \
std::string c; \
c += " test(" #a ")";
}
Run Code Online (Sandbox Code Playgroud)
请问你在这里解释一下#的用法吗?我想把宏放在一个静态函数中,但在我想完全理解它的作用之前.
谢谢
#在宏中的使用意味着宏参数将用引号括起来"":
#define FOOBAR(x) #x
int main (int argc, char *argv[])
{
std::cout << FOOBAR(hello world what's up?) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
产量
hello world what's up?
Run Code Online (Sandbox Code Playgroud)
在下面我们显示foo.cpp的内容,然后在预处理器运行后文件的样子:
:/tmp% cat foo.cpp
#define STR(X) #X
STR (hello world);
Run Code Online (Sandbox Code Playgroud)
...
:/tmp% g++ -E foo.cpp # only run the preprocessor
# 1 "foo.cpp"
# 1 "<command-line>"
# 1 "foo.cpp"
"hello world";
Run Code Online (Sandbox Code Playgroud)
查看以下指向cpp(C预处理器)文档中的条目的链接:
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |