vs2008 showIncludes命令的使用

本文详细介绍了如何解决C++编译过程中因使用不同版本的winnt.h和basetsd.h文件而导致的语法错误。通过在工程属性中启用/showIncludes命令来查看实际包含的头文件路径,最终通过删除不匹配的basetsd.h文件解决了问题。此解决方案有助于避免类似错误并提高代码一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

今天编译一个工程。

发现如下错误。

1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C2146: syntax error : missing ';' before identifier 'PVOID64'
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C2146: syntax error : missing ';' before identifier 'Buffer'
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>graphics.cpp
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C2146: syntax error : missing ';' before identifier 'PVOID64'
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C2146: syntax error : missing ';' before identifier 'Buffer'
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>ini.cpp
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C2146: syntax error : missing ';' before identifier 'PVOID64'
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C2146: syntax error : missing ';' before identifier 'Buffer'
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>input.cpp
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C2146: syntax error : missing ';' before identifier 'PVOID64'
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C2146: syntax error : missing ';' before identifier 'Buffer'
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>power.cpp
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C2146: syntax error : missing ';' before identifier 'PVOID64'
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C2146: syntax error : missing ';' before identifier 'Buffer'
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>Generating Code...
1>Build log was saved at "file://e:\codes\fangyukuan\cpp\game\hge181\src\core\Debug\BuildLog.htm"
1>hge - 25 error(s), 0 warning(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========




网上查了一下,说是 "winnt.h" 和 "basetsd.h" 用的版本不一样。

还是一头雾水,这个时候  /showIncludes 命令派上用场了。

在工程属性->C/C++->command line 的 additional Options 加上 /showIncludes

把include的路径显示出来。

编译如下:

1>Note: including file: e:\codes\fangyukuan\cpp\game\hge181\src\core\hge_impl.h
1>Note: including file:  e:\codes\fangyukuan\cpp\game\hge181\src\core\..\..\include\hge.h
1>Note: including file:   C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\windows.h
1>Note: including file:    C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\sdkddkver.h
1>Note: including file:    D:\Program Files\Microsoft Visual Studio 9.0\VC\include\excpt.h
1>Note: including file:     D:\Program Files\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
1>Note: including file:      D:\Program Files\Microsoft Visual Studio 9.0\VC\include\sal.h
1>Note: including file:       d:\program files\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h
1>Note: including file:      D:\Program Files\Microsoft Visual Studio 9.0\VC\include\vadefs.h
1>Note: including file:    D:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdarg.h
1>Note: including file:    C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\windef.h
1>Note: including file:     C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h
1>Note: including file:      D:\Program Files\Microsoft Visual Studio 9.0\VC\include\ctype.h
1>Note: including file:       D:\Program Files\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
1>Note: including file:      C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\specstrings.h
1>Note: including file:       C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\specstrings_adt.h
1>Note: including file:       C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\specstrings_strict.h
1>Note: including file:        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\specstrings_undef.h
1>Note: including file:      e:\codes\fangyukuan\cpp\3rdparty\dx81sdk\include\basetsd.h




看上面红色部分,果然不一样。把e:\codes\fangyukuan\cpp\3rdparty\dx81sdk\include\basetsd.h删除再编译。这时编译通过了。这时可以把 /showIncludes去掉了。要不输出太多东西,看起复杂啊。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值