Windows c++;11包括内部#ifdef
在我的Visual studio 2012中,我有C++11静态函数:Windows c++;11包括内部#ifdef,windows,debugging,c++11,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, dum
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> ^
:)
有人能帮我吗
谢谢一个#include
指令会将包含文件的全文准确地放在指令所在的位置。所以“KuuWun.h”中的所有东西都会在你的代码> CurATKUKU/<代码>函数的中间打个盹,它不属于。
您几乎总是会将包含内容放在源文件的顶部。一个#include
指令会将包含文件的全文准确地放在指令所在的位置。所以“KuuWun.h”中的所有东西都会在你的代码> CurATKUKU/<代码>函数的中间打个盹,它不属于。
您几乎总是会将包含内容放在源文件的顶部。一个#include
指令会将包含文件的全文准确地放在指令所在的位置。所以“KuuWun.h”中的所有东西都会在你的代码> CurATKUKU/<代码>函数的中间打个盹,它不属于。
您几乎总是会将包含内容放在源文件的顶部。一个#include
指令会将包含文件的全文准确地放在指令所在的位置。所以“KuuWun.h”中的所有东西都会在你的代码> CurATKUKU/<代码>函数的中间打个盹,它不属于。
您几乎总是将包含项放在源文件的顶部。您显示的代码没有任何
extern“C”
,那么您为什么认为这是错误的根源呢?错误可能在其中一个包含的文件中,因此请确定实际包含的文件,然后查看该文件。看起来您包含了一个带有声明的头文件。在函数中(无论是在c++11中还是在任何版本的c++)1中都不能这样做。与外部“c”无关。2。当然,你可以在c++中完成。好的,请显示文件,让我们确定是否可行。我非常怀疑,但你有能力证明我错了。你展示的代码没有任何外部“C”,那么你为什么认为这是错误的根源呢?错误可能在其中一个包含的文件中,因此请确定实际包含的文件,然后查看该文件。看起来您包含了一个带有声明的头文件。在函数中(无论是在c++11中还是在任何版本的c++)1中都不能这样做。与外部“c”无关。2。当然,你可以在c++中完成。好的,请显示文件,让我们确定是否可行。我非常怀疑,但你有能力证明我错了。你展示的代码没有任何外部“C”,那么你为什么认为这是错误的根源呢?错误可能在其中一个包含的文件中,因此请确定实际包含的文件,然后查看该文件。看起来您包含了一个带有声明的头文件。在函数中(无论是在c++11中还是在任何版本的c++)1中都不能这样做。与外部“c”无关。2。当然,你可以在c++中完成。好的,请显示文件,让我们确定是否可行。我非常怀疑,但你有能力证明我错了。你展示的代码没有任何外部“C”,那么你为什么认为这是错误的根源呢?错误可能在其中一个包含的文件中,因此请确定实际包含的文件,然后查看该文件。看起来您包含了一个带有声明的头文件。在函数中(无论是在c++11中还是在任何版本的c++)1中都不能这样做。与外部“c”无关。2。当然,你可以在c++中完成。好的,请显示文件,让我们确定是否可行。我非常怀疑,但你有能力证明我错了。我怀疑你是对的,但从技术上讲,如果文件实际上不是头文件,而是一些神秘的代码块,那么在函数中包含include指令可能是绝对正确的。此函数只执行一次,作为应用程序初始化阶段的抽象工厂。@user4108878这不是执行问题,而是编译问题。@stefan是的,“几乎总是”是为了阻止迂腐。@Sneftel Hehe,对不起,我默认用-pedantic
阅读答案;-)我想你是对的,但从技术上讲,如果这些文件实际上不是头文件,而是一些神秘的代码块,那么在函数中使用include指令可能是绝对正确的。这个函数只执行一次,作为应用程序初始化阶段的抽象工厂。@user4108878这不是执行问题,而是编译问题。@stefan是的,是的“几乎总是这样“是为了阻止学究风气。@斯奈夫特尔·赫赫,对不起,我默认用-pedantic
阅读答案;-)我想你是对的,但从技术上讲,如果这些文件实际上不是头文件,而是一些神秘的代码块,那么在函数中使用include指令可能是绝对正确的。这个函数只执行一次,作为应用程序初始化阶段的抽象工厂。@user4108878这不是执行问题,而是编译问题。@stefan是的,是的“几乎总是这样“是为了阻止学究风气。@斯奈夫特尔·赫赫,对不起,我默认用-pedantic
阅读答案;-)我想你是对的,但从技术上讲,如果这些文件实际上不是头文件,而是一些神秘的代码块,那么在函数中使用include指令可能是绝对正确的。这个函数只执行一次,作为应用程序初始化阶段的抽象工厂。@user4108878这不是执行问题,而是编译问题。@stefan是的,是的“几乎总是”是为了阻止迂腐。@Sneftel-Hehe,对不起,我默认用-pedantic
阅读答案;-)