我在尝试构建一个C ++模块时遇到了一些有趣的东西。该模块本身尚未构建超过3年,当我尝试构建时,我遇到了一个make错误:
Make Error: c:\PROGRA~1\MICROS~2\VC98\INCLUDE\ole2.h: Cannot find file 'macname1.h'
我环顾互联网寻找修复,但还没有发现其他任何有用的信息,所以我转而使用OLE2.H
文件。当我查看那里时,有一个很大的#ifndef _MAC
和一个相应的#else
,其中包含我丢失的包含文件。
由此我可以假设在包含此文件之前有些事情正在设置_MAC
变量,所以我修改了文件并在第一个undef _MAC
之前添加了#ifndef
。然而,我很惊讶地说,这没有做任何事情。
最终我碰巧在文件中添加了一些标签,以便我可以计算出if / else对。 BOOM ......如果我拿走整个#ifndef
块并在该行的开头添加一个标签,则_MAC
被正确拾取。这么多,我甚至可以删除我添加的其他#undef
,它仍然有效。
如果我将块移回第1列,我会收到make错误。如果我再次添加标签,它就会起作用。
编辑:我只需要标记给我提出问题的主要包含:
#include "macname1.h"
VS
#include "macname1.h"
以前有没有人见过这个?我真的不想编辑核心的Windows包含文件来构建一个模块。
由于