外置"C"时不能使用 cout/endl
Can't use cout/endl when extern "C"
我希望有人可以帮助我解决这个小问题,因为我根本没有任何地方。首先,这是代码:
#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
不知道为什么它需要按这个顺序,但它现在可以工作了......很奇怪...
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- std::cout << glGetString(GL_RENDER) << std::endl;抛出错误但不GL_Renderer或GL_Verision,我不知道为什么?
- "cout<<count<<endl;"没有打印任何内容
- 使用 std::endl 与 "n" 当 cin 和 cout 被解绑时
- std::cout doen不喜欢 std::endl 和 String in conditional-if
- 在 Cout << "hello" << endl 中删除 endl 后,我的C++程序停止工作
- 为什么在语句"std::cout << std::endl;"中使用时需要命名空间限定,给定依赖于参数的查找?
- Cout 不会打印文本而没有 endl 在循环中?
- 为什么要编译endl(std::cout)
- 为什么"std::cout << myVector[x][x] << std::endl"会产生下标错误?
- std::cout 不打印带有 endl 的值(换行符说明符)
- 符号 endl 和 cout 无法解析
- 外置"C"时不能使用 cout/endl
- 在 AllocConsole 之前执行 std::endl 会导致不显示 std::cout
- 让"cout << obj1 + obj2 << endl;"发挥作用
- 我可以在C++中删除 ( cout<< " " <<endl ) 中的"endl"吗?
- c++中cout缓冲区和endl的结构
- #define print(msg) std::cout << msg << std::endl
- "n" 或 'n' 或 std::endl to std::cout?
- "cout&endl"和"boost"有什么问题?