8
为什么预处理器宏是邪恶的,还有哪些替代方法?
我一直问这个问题,但是我从来没有收到一个很好的答案。我认为几乎所有程序员甚至在编写第一个“ Hello World”之前都遇到过诸如“永远不应该使用宏”,“宏是邪恶的”之类的短语,我的问题是:为什么?这么多年后,有了新的C ++ 11,还有真正的替代选择吗? 最简单的部分是关于#pragma特定于平台和编译器的宏,例如,它们在大多数情况下都具有严重缺陷,例如#pragma once在至少两种重要情况下容易出错:在不同路径中具有相同名称,并且在某些网络设置和文件系统中。 但是总的来说,宏及其用法的替代方案又如何呢?