在阅读了有关宏使用的另一个问题之后,我想知道:它们有什么用?
我看不到很快会被任何其他语言构造所取代的一件事,就是减少了您需要在以下内容中键入的相关单词的数量:
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; }
相对于
#define LOGFN( T ) void log_type( const T value ) { std::cout << #T ## ": " << value; }
LOGFN( int )
LOGFN( bool )
...
LOGFN( char )
LOGFN( double )
LOGFN( float )
还有其他“不可替代的东西”吗?
编辑:
试图总结原因-为什么在答案中遇到;因为那是我感兴趣的。主要是因为我感觉其中的大多数是由于我们仍然在仍旧缺乏支持的环境中对原始文本文件进行编程。
#ifdef DEBUG
,平台问题)(SadSido,Catalin,Goz)__LINE__, __TIME__
);我也将“字符串化”置于此原因下(SadSido,Jla3ep,Jason S)require
与include
功能(#pragma once
)(SadSido,Catalin)MESSAGEMAP
,BOOST_FOREACH
)(SadSido,fnieto)来增强最佳答案
#ifdef __DEBUG__
); #pragma once
)包含一次每个 header ; __FILE__
和__LINE__
-替换为当前文件名和当前行; BEGIN_MESSAGE_MAP()
); 请在以下网址查看有趣的宏讨论:
http://www.gotw.ca/gotw/032.htm
http://www.gotw.ca/gotw/077.htm
关于c++ - 预处理程序宏有什么用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1265951/