我想在cpp中检索当前用户文档文件夹的文件夹,因此我使用SHGetFolderPath
并包含Shobjidl.h
。
结果我的代码无法编译,并生成以下输出:
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\shobjidl.h(8994): error C2143: syntax error : missing ')' before 'constant'
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\shobjidl.h(8994): error C2143: syntax error : missing ';' before 'constant'
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\shobjidl.h(8994): error C2059: syntax error : ')'
1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\shobjidl.h(8994): error C2238: unexpected token(s) preceding ';'
这些错误背后的代码是:
virtual HRESULT STDMETHODCALLTYPE GetInt32(
/* [in] */ __RPC__in REFPROPERTYKEY key,
/* [out] */ __RPC__out int *pi) = 0; // <- this line produces compile error
怎么了?提前谢谢。
我正在使用Win 7,VS2010 Express。
答案 0 :(得分:2)
根据the documentation,您需要为该函数添加的头文件为Shlobj.h
,而不是Shobjidl.h
。我猜Shobjidl.h
可能是一个内部头文件,并不意味着直接包含它 - 它可能取决于之前已经包含的其他头文件,这将修复你看到的错误。