【发布时间】:2018-09-26 00:02:40
【问题描述】:
我对预处理器宏有一些疑问。这里有 2 个不同的代码片段的例子来讨论;
tmp.h
#define DEFAULT_STRING "default_value"
tmp.cpp
void tmpFunc(std::string newValue){
m_stringValue = newValue;
if(newValue.isEmpty())
newValue = DEFAULT_STRING;
}
还有第二个版本
tmp.h
const std::string m_defaultValue = "default_value"
tmp.cpp
void tmpFunc(std::string newValue){
m_stringValue = newValue;
if(newValue.isEmpty())
newValue = m_defaultValue;
}
所以我的问题是;
- 第一个版本是否增加了二进制大小(与第一个版本相比)?
- 第二个版本是否消耗更多内存(与第一个相比)?
- 这两种实现对性能有何影响?哪个应该跑得更快,为什么?
- 在哪种情况下哪个更可取/有益?
- 有没有更好的方法来实现设置默认值?
谢谢。
【问题讨论】:
-
关于这个话题的帖子已经很多了...其中之一是stackoverflow.com/questions/1637332/static-const-vs-define
-
不,它不是完全重复的。另一个问题没有就这两种方法提出这些具体问题。
标签: c++ variables constants preprocessor