extern“C”时无法使用cout / endl

时间:2012-05-05 18:47:57

标签: c++ extern

我希望有人可以帮助我解决这个小问题,因为我根本就没有。首先,继承代码:

#include<string>
#include<iostream>
#include<Windows.h>

using namespace std;

extern "C"
{
#include<hidsdi.h>
#include<SetupAPI.h>
}

int main()
{
    int iQuit;

    cout << "Testing Program" << endl;

    return 0;
}

它不会让我使用标准的东西(即cout,cin,endl等)。当我取出所有外部“C”代码时,它只允许我使用它......为什么会这样?有没有办法解决这个问题?

编辑:对不起,忘了告诉你确切的错误:它说标识符“cout”未定义

由于

2 个答案:

答案 0 :(得分:3)

编译环境有问题。该代码没有任何问题。它编译并运行良好。

在对你提出的问题的评论中:

  

我正在学习写一个驱动程序,所以我可以使用我的设备,如键盘和鼠标,所以我正在使用WDK。如果我错了,请纠正我,但我认为你需要使用extern“C”来使用这些头文件?

实际上,您应该简单地用C而不是C ++编写代码来进行驱动程序开发。

答案 1 :(得分:0)

我发现了问题,我没有在VC ++目录中以正确的顺序添加目录。

订单应该是:

C:\ WINDDK \ 7600.16385.1 \ INC \ DDK

$(VCInstallDir)包括

$(VCInstallDir)atlmfc \包括

C:\ WINDDK \ 7600.16385.1 \ INC \ API

$(WindowsSdkDir)包括

$(FrameworkSDKDir)\包括

不知道为什么它需要按此顺序排列,但它现在有效...非常奇怪...