以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- [求助]宏定义中为什么有副作用 (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=69586) |
-- 作者:kid1986 -- 发布时间:11/18/2008 11:09:00 PM -- [求助]宏定义中为什么有副作用 #include <iostream> #define ABS(a) ((a < 0) ? (-(a)) : (a)) int main() { int x = -5; std::cout << ABS(++x) << '\n'; } /* Output: 3 */ 我知道用inline可以用避免出现这个问题,但是想知道为什么会出现副作用啊,是什么导致了副作用的出现?谢谢了 |
-- 作者:kid1986 -- 发布时间:11/24/2008 9:29:00 PM -- 都没有人回答哦,自己回答下,主要因为 条件?( 值1:值2 )这个三木运算符在条件中++x已经运算了一次,后面的取值又运算了一次。 唉,又问了个傻×的问题~~ |
-- 作者:卷积内核 -- 发布时间:11/25/2008 3:26:00 PM -- 其实宏在编程中的副作用主要表现在编译器的处理计算上,如果考虑不周全很容易出现重复计算的问题。所以写程序要用宏的简洁,又要注意其中的陷阱,以防出现莫名其妙的错误(当然寻根问底也不是莫名其妙啦)。 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
35.156ms |