我在學習C++,宏的行爲不像預期的那樣。宏輸出不起作用
1 #include<cstdlib>
2 #include<iostream>
3 #include<cstring>
4 #define die(x) std::cout << x << std::endl ; exit(-1)
5 const char *help = "Usage: coffee --help --version";
6 const char *version = "alpha";
7 int main(int argc,char **argv)
8 {
9 if(argc<2||!strcmp(argv[1],"--help"))
10 die(help);
11 if(!strcmp(argv[1],"--version"))
12 die(version);
13
14 return 0;
15
16 }
g++ -o sample ./*
./sample --help
輸出:用法:咖啡--help --version
./sample --version
輸出:
我很困惑,爲什麼--version
沒有輸出字符串alpha
。
一個很好的樣本,以證明爲什麼它能夠更好地使用一個函數的定義,而不是一個宏觀的。 –
http://www.parashift.com/c++-faq/macros-with-multi-stmts.html – aschepler