中易网

如何解决在Windows程序中使用了C++标准库文件后

答案:1  悬赏:0  
解决时间 2021-11-10 07:12
如何解决在Windows程序中使用了C++标准库文件后
最佳答案
在Windows 的程序设计中,使用了标准库 ( STL ) 后就产生了很多语法错误,可想而知它们两者之间有冲突。原因就在于一方面 min 和 max 宏在 Windef.h 定义成:
#ifndef NOMINMAX
#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))#endif#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))#endif#endif
这里的 Windef.h 是被 Windows.h 所包含的,而 Windows.h 几乎被所有的基于 Windows 的程序所包含。另一方面,min 和 max 也在 STL 中的 Algobase.h 文件中被定义了:
template <class T>
inline const T& min(const T& a, const T& b) {
return b < a ? b : a;}template <class T, class Compare>
inline const T& min(const T& a, const T& b, Compare comp) {
return comp(b, a) ? b : a;}template <class T>
inline const T& max(const T& a, const T& b) {
return a < b ? b : a;}template <class T, class Compare>
inline const T& max(const T& a, const T& b, Compare comp) {
return comp(a, b) ? b : a;}已经在 Windef.h 中定义成了一个宏,同样名称的函数又在 STL 中被定义了,由此可知,当你同时包含了 Windef.h( 或者 Windows.h ) 和 Algobase.h ( 来自 STL ) 时,就会产生语法错误。所以,我们要屏蔽去掉其中的一个定义。
---------------------------------------------------------------
下面的做法是用 NOMINMAX 来屏蔽掉 Windef.h 中的 min 和 max .
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
天津房屋装修设计公司哪家不错
靳庄村委会办公地址在什么地方,我要处理点事
谁知道国家对房价的调控政策有哪些?
跟女朋友好了两年半了。为什么时常打电话聊天
无利不起早的意思?成语怎么解释?
别说话,吻我!
网上哪里买牛仔裤好
送花。武汉 中南民族大学工商学院 花店。
陈庄村委会地址在哪,我要去那里办事
怎么把word里面的页面设置成信纸的格式?要一
聚合物防水砂浆添加剂价格怎么样?
梦见集市是什么意思?好不好呢?
请问谁知道乳胶漆墙面怎么贴墙纸
淘宝怎么帮别人代付
我的天哪这个英语单词怎么写
推荐资讯
梦见凤凰啄大蛇是什么意思?好不好呢?
串联回路暖气片怎样装温控阀门
如何处理别克陆尊耗油过高?
计算内墙抹灰面积时为层高什么减去0.08?
受寒肚子痛怎么办?
命缕的意思是什么?命缕的释义是什么啊?
请问在天津市西青区有没有养老院?
烟台幼儿园体检都有什么项目
广州玩具童车批发的在什么地方?
MM谁用过SK-II的产品,介绍介绍经验?
通山县咸宁中国建设银行我想知道这个在什么地
解释这句话什么意思:顺天意,尽责任,心平衡,善
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?