我在Visual Studio 2015中开始研究C ++应用程序的GUI方面,包括<windows.h>
我对其他具有语法问题的文件产生了极其神秘的错误。我发现包含该头文件是问题的根源。
我在网上浏览了一下,发现了NOMINMAX
,但是定义并没有解决问题。我使用numeric_limits<int>::min()
/ max()
和::infinity()
一个使用浮点数,因此NOMINMAX
将解决这个小问题,但没有解决这些语法错误的主要问题作为最小/最大问题发生的编译器错误非常具体。
将标题移到最底部似乎暂时解决了它,然而我对此并不满意,因为这意味着我的代码中有一个潜在的定时炸弹,我不确定哪里。现在它的5k LOC但我更愿意处理它而不是达到50k并以一种迫使我处理它的方式遇到这个问题。
我有哪些技巧可以找出错误发生的位置?我可以在预处理后转储文件吗?通过并评论所有内容会特别痛苦......但我不知道我是否有选择权。我对位置有了一个大概的看法,但它很遗憾地出现在非常突出的包含中,所以试图隔离它所需的评论量并不太令人愉快。
是否有工具或某种方法可以帮助我解决这个问题?或者我不得不长时间和肮脏的方式去做?
注意:我也尝试过WIN32_LEAN_AND_MEAN
,NOMINMAX
和VC_EXTRALEAN
尝试解决此问题,但这不起作用。
答案 0 :(得分:0)
我的解决方案来自于决定一次一个地手动包含windows.h包含文件,以查看导致它的原因。这最终导致我发现wingdi.h引起了问题,#define NOGDI
解决了这个问题。进一步的谷歌搜索产生了那里的一大块名字可能与类名碰撞,我至少证实了其中一个。