您遇到的最糟糕的 现实世界宏/预处理器滥用是什么(请不要设想IOCCC答案*哈哈*)?
如果它真的很有趣,请添加一个简短的片段或故事.目标是教一些东西,而不是总是告诉人们"永远不要使用宏".
ps:之前我曾经使用过宏...但是当我有一个"真正的"解决方案时,我最终会摆脱它们(即使真正的解决方案是内联的,它也会变得类似于宏).
额外:举一个例子,宏实际上比非宏解决方案更好.
相关问题: C++宏什么时候有用?
这个问题可能看起来很基本,但是来自工程(非计算机科学)背景,我不确定#某些C++代码中的代码片段是什么.
快速搜索使我得到了关于预处理器指令的简明扼要的cplusplus教程页面.
但是为什么要干扰预处理器指令的概念呢?是否不可能编写可以为常量赋值,定义子程序/函数/宏和处理错误的等效代码?
我想我最终想知道什么时候使用这样的预处理器指令是好的做法,当它不是时.
阅读另一个问题关于使用宏后,我在想:什么是他们好?
我很快就会看到被其他语言构造取代的一件事是减少你需要在下面输入的相关单词的数量:
void log_type( const bool value ) { std::cout << "bool: " << value; }
void log_type( const int value ) { std::cout << "int: " << value; }
...
void log_type( const char value ) { std::cout << "char: " << value; }
void log_type( const double value ) { std::cout << "int: " << value; }
void log_type( const float value ) { std::cout << "float: " << value; }
Run Code Online (Sandbox Code Playgroud)
而不是
#define LOGFN( T ) …Run Code Online (Sandbox Code Playgroud)