c ++ 11包含在#ifdef中

时间:2015-01-21 14:30:50

标签: windows debugging c++11

在我的Visual Studio 2012中,我有C ++ 11静态函数:

kuku* kuku::createKuku(bool enable, std::string dumpPat)
{
#ifndef ANDROID
    #include "kukuWin.h"
    return new kukuWin(enable, dumpPat);
#else
    #include "kukuAndroid.h"
    return new kukuAndroid(enable, dumpPat);
#endif
}

在c ++ 98中它可以工作,但在这里我有多个错误:

1>C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\excpt.h(29): error : linkage specification is not allowed
1>    extern "C" {
1>    ^
1>  
1>C:\Program Files (x86)\Windows Kits\8.0\Include\shared\windef.h(17): error : linkage specification is not allowed
1>    extern "C" {
1>    ^
1>  
1>C:\Program Files (x86)\Windows Kits\8.0\Include\shared\specstrings.h(49): error : linkage specification is not allowed
1>    extern "C" {
1>    ^
1>  
1>C:\Program Files (x86)\Windows Kits\8.0\Include\shared\driverspecs.h(133): error : linkage specification is not allowed
1>    extern "C" {
1>    ^
1>  
1>C:\Program Files (x86)\Windows Kits\8.0\Include\shared\minwindef.h(42): error : linkage specification is not allowed
1>    extern "C" {
1>    ^

:)

任何人都可以帮助我,

由于

1 个答案:

答案 0 :(得分:3)

#include指令会将包含文件的全文准确地放在指令所在的位置。所以那些东西都在" kukuWin.h"正在你createKuku函数的中间点击它,它不属于它。

您几乎总是将内容放在源文件的顶部。