外置"C"时不能使用 cout/endl

Can't use cout/endl when extern "C"

本文关键字:cout endl 不能 外置      更新时间:2023-10-16

我希望有人可以帮助我解决这个小问题,因为我根本没有任何地方。首先,这是代码:

#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"未定义

谢谢

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

在对问题的评论中,您说:

正在学习编写驱动程序,以便我可以使用键盘和鼠标等设备执行操作,因此我正在使用 WDK。如果我错了,请纠正我,但我认为您需要使用 extern"C" 来使用这些头文件?

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

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

顺序应为:

C:WinDDK7600.16385.1incddk
$(VCInstallDir)include
$(VCInstallDir)atlmfcinclude
C:WinDDK7600.16385.1incapi
$(WindowsSdkDir)include
$(FrameworkSDKDir)include

不知道为什么它需要按这个顺序,但它现在可以工作了......很奇怪...