【发布时间】:2013-06-11 11:34:26
【问题描述】:
我读过很多书和教程,我应该避免在 c++ 中使用宏。很好,但为什么呢?我不明白。它们非常有用,经常在 C 语言中使用。
有人可以(非常)详细地解释一下,为什么我应该在 C++ 中避免使用它们?
【问题讨论】:
-
书籍没有解释原因吗?
-
“为什么我应该避免在 C++ 中使用宏”的快速 google 提出了这个:securecoding.cert.org/confluence/display/cplusplus/…
-
好吧,你应该避免使用宏,因为它的某些其他功能提供了更好的替代方案;否则使用宏。您担心什么样的情况?
-
@juanchopanza 悲伤但真实,不,他们没有:(
-
我脑海中的第一个想法:缺乏命名空间支持,难以调试,容易出现错误(范围错误),而不是 C++ 方式(即 C++ 通常提供更好的替代方案),宏的副作用多次引用一个参数(想想
MYMACRO(i++),其中MYMACRO类似于something((X), ... , (X), ...))