尝试在运行QT5.4的Windows平台上用x86和x86_64编译VS2010,VS2012的开源项目。
名为 unit.h 的文件包含一个部分:
[...]
// DO NOT change noscale's value. Lots of assumptions are made based on this
// value, both in the code and (more importantly) in the database.
enum unitScale
{
noScale = -1,
extrasmall = 0,
small = 1, // Line that causes errors.
medium = 2,
large = 3,
extralarge = 4,
huge = 5,
without = 1000
};
[...]
生成
我试着用我的帽子解决它。我删除了" small"在代码中枚举,我仍然得到错误。但在删除所有用途后,我重新命名" small"到" smallo"一切都好。它似乎表示名称冲突,但文件搜索在整个项目中没有给我任何引用。它不是我所知道的任何关键字。
有什么想法吗?
编辑:感谢非常有用的评论,这是一个更奇怪的版本有效。有人可以解释一下吗?
#ifdef small // Same with just straight "#if"
#pragma message("yes")
#endif
#ifndef small
#pragma message("no") // Always prints no.
#endif
#undef small
enum unitScale
{
noScale = -1,
extrasmall = 0,
small = 1,
medium = 2,
large = 3,
extralarge = 4,
huge = 5,
without = 1000
};
编辑2:pragma指令显示是,但仅限于先前已加载windows.h标头的文件,并且它在编译器输出中丢失了。 感谢大家!真是个任务。