如何获取触发内部编译器错误的预处理行?
How to get the preprocessed line which trigger an internal compiler error?
cl 选项
/nologo /ML /Gt0 /QMOb2000 /W3 /GX /Od /Gf /X /I "D:\Xorgfr\include" /D "NDEBUG" /D "NOGDICAPMASKS" /D "NOWINMESSAGES" /D "NOWINSTYLES" /D "NOSYSMETRICS" /D "NOMENUS" /D "NOICONS" /D "NOSYSCOMMANDS" /D "NORASTEROPS" /D "NOSHOWWINDOW" /D "OEMRESOURCE" /D "NOATOM" /D "NOCLIPBOARD" /D "NOCOLOR" /D "NOCTLMGR" /D "NODRAWTEXT" /D "NOGDI" /D "NOKERNEL" /D "NONLS" /D "NOMB" /D "NOMEMMGR" /D "NOMETAFILE" /D "NOMINMAX" /D "NOMSG" /D "NOOPENFILE" /D "NOSCROLL" /D "NOSERVICE" /D "NOSOUND" /D "NOTEXTMETRIC" /D "NOWINOFFSETS" /D "NOWH" /D "NOCOMM" /D "NOKANJI" /D "NOHELP" /D "NOPROFILER" /D "NODEFERWINDOWPOS" /D "NOMCX" /D "Roster" /D WIN32_WINNT=0x4000 /Fo"MIPSRel/" /c
实际上我正在构建一个内核 dll。
D:\Xfr\main.C() : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'mio.cpp', line 49)
mio.cpp
文件在我的系统上不存在,所以我认为这是 cl.exe 源代码的一部分。使用 gcc,有一个选项可以让您知道哪一行代码触发了编译器错误。
我试图禁用已编译的 headers;所有优化都将目标更改为 R10000,但错误仍然附加在同一位置。
并且微软肯定不会更正错误。我找不到支持该平台的其他编译器。
此外,我确实需要使用包含文件,因为导出的是结构的结构。
static ALLOC_SECTION_LDATA KBDTABLES KbdTables = {
&CharModifiers,
aVkToWcharTable,
aDeadKey,
aKeyNames,
aKeyNamesExt,
aKeyNamesDead,
ausVK,
sizeof(ausVK) / sizeof(ausVK[0]),
aE0VscToVk,
aE1VscToVk,
MAKELONG(KLLF_LRM_RLM | KLLF_ALTGR, KBD_VERSION),
2,
sizeof(aLigature[0]),
(PLIGATURE1)aLigature
};
PKBDTABLES KbdLayerDescriptor(VOID) // this is the exported function, as you can see I definitely need it’s definition
return &KbdTables; // just return a pointer to the structure
}
刚找到答案。我认为 mio.cpp 可能意味着 mips io 并且它与写入文件有关。
就像在1801年之前设置时钟一样简单
不知道为什么,但这绝对是原因。做不恢复问题。
此外,BIOS 似乎无法很好地处理 post 2000 年。
cl 选项
/nologo /ML /Gt0 /QMOb2000 /W3 /GX /Od /Gf /X /I "D:\Xorgfr\include" /D "NDEBUG" /D "NOGDICAPMASKS" /D "NOWINMESSAGES" /D "NOWINSTYLES" /D "NOSYSMETRICS" /D "NOMENUS" /D "NOICONS" /D "NOSYSCOMMANDS" /D "NORASTEROPS" /D "NOSHOWWINDOW" /D "OEMRESOURCE" /D "NOATOM" /D "NOCLIPBOARD" /D "NOCOLOR" /D "NOCTLMGR" /D "NODRAWTEXT" /D "NOGDI" /D "NOKERNEL" /D "NONLS" /D "NOMB" /D "NOMEMMGR" /D "NOMETAFILE" /D "NOMINMAX" /D "NOMSG" /D "NOOPENFILE" /D "NOSCROLL" /D "NOSERVICE" /D "NOSOUND" /D "NOTEXTMETRIC" /D "NOWINOFFSETS" /D "NOWH" /D "NOCOMM" /D "NOKANJI" /D "NOHELP" /D "NOPROFILER" /D "NODEFERWINDOWPOS" /D "NOMCX" /D "Roster" /D WIN32_WINNT=0x4000 /Fo"MIPSRel/" /c
实际上我正在构建一个内核 dll。
D:\Xfr\main.C() : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'mio.cpp', line 49)
mio.cpp
文件在我的系统上不存在,所以我认为这是 cl.exe 源代码的一部分。使用 gcc,有一个选项可以让您知道哪一行代码触发了编译器错误。
我试图禁用已编译的 headers;所有优化都将目标更改为 R10000,但错误仍然附加在同一位置。
并且微软肯定不会更正错误。我找不到支持该平台的其他编译器。
此外,我确实需要使用包含文件,因为导出的是结构的结构。
static ALLOC_SECTION_LDATA KBDTABLES KbdTables = {
&CharModifiers,
aVkToWcharTable,
aDeadKey,
aKeyNames,
aKeyNamesExt,
aKeyNamesDead,
ausVK,
sizeof(ausVK) / sizeof(ausVK[0]),
aE0VscToVk,
aE1VscToVk,
MAKELONG(KLLF_LRM_RLM | KLLF_ALTGR, KBD_VERSION),
2,
sizeof(aLigature[0]),
(PLIGATURE1)aLigature
};
PKBDTABLES KbdLayerDescriptor(VOID) // this is the exported function, as you can see I definitely need it’s definition
return &KbdTables; // just return a pointer to the structure
}
刚找到答案。我认为 mio.cpp 可能意味着 mips io 并且它与写入文件有关。
就像在1801年之前设置时钟一样简单
不知道为什么,但这绝对是原因。做不恢复问题。
此外,BIOS 似乎无法很好地处理 post 2000 年。