【发布时间】:2013-11-14 17:13:40
【问题描述】:
在 C/C++ 中,使用 #define [和 #ifndef #endif] 创建值有什么区别,而您也可以轻松地使用 int 或 std::string [C++] 来创建值?
#ifndef MYVAL
#define MYVAL(500)
#endif
//C++
cout << MYVAL << endl;
//C
printf(MYVAL);
//C++
int MYVAL = 500;
cout << MYVAL << endl;
//C
int MYVAL = 500;
printf(MYVAL);
【问题讨论】:
-
请注意,C 的两个代码 sn-ps 都无法编译。
-
MYVAL定义中的括号没有用。 -
我认为你的意思是#define MYVAL(500)有两个问题,首先它有'500'作为宏参数,这是非法的,如果名称是数字,它应该已经使用像 #define MYVAL(a500) 这样允许的东西作为前缀就可以了,就像其他地方的命名约定一样。其次,由于宏的声明没有任何内容而且它是单个参数,因此它基本上什么都不做,假设您以正确的方式使用它:您不能只在某个地方使用 MYVAL,您还必须在其中放置一个参数(即,MYVAL(some_param)),但替换为空值!
标签: c++ c if-statement c-preprocessor