c++ - C 和 C++ 中 WINAPI 的区别

标签 c++ c windows winapi

我正在从驱动程序读取数据。该驱动程序附带了有关如何基于该驱动程序开发应用程序的示例。这些例子是几年前写的。他们使用 WINAPI 和 C。现在我将使用他们的一些头文件。它们定义了数据结构和各种其他内容。

我尝试在 C++ 中创建 WINAPI 并尝试链接到这些文件。但正如解释的here, in the last answer ,我非常相信我的代码也有同样的问题。

现在,我不能按照那里的建议去做。我的程序很长,我不能弄乱头文件。它们很复杂。

我的选择是完全用 C 语言创建我的项目(我希望它能解决问题)。

首先,我将文件 .cpp t0 重命名为 .c。 (我什至不知道这两种编程语言之间的区别。到目前为止,它们的区别没有任何区别。) 主要问题

我使用 API 使用文件 IO 并使用了以下内容:

HANDLE myFile=CreateFile("filename.txt",FILE_APPEND_DATA,FILE_SHARE_WRITE,0,\
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
int BufferNo=sprintf(body,"%.5f %[3].5f %[3].5f %[3].5f %[3].5f %[3].5f %[3].5f \
%[3].5f %[3].5f \n",a1,a2,a3,a4,a5,a6,a7,a8,a9);
WriteFile(myFile,body,lstrlen(body),0,NULL);
CloseHandle(myFile);

问题是它无法编译。说这样的错误:

error C2275: 'HANDLE' : illegal use of this type as an expression
error C2146: syntax error : missing ';' before identifier 'myFile'
error C2065: 'myFile' : undeclared identifier
warning C4047: '=' : 'int' differs in levels of indirection from 'HANDLE'
error C2143: syntax error : missing ';' before 'type'
error C2065: 'myFile' : undeclared identifier
warning C4022: 'WriteFile' : pointer mismatch for actual parameter 1
error C2065: 'myFile' : undeclared identifier
warning C4022: 'CloseHandle' : pointer mismatch for actual parameter 1

这些不是 C++ 中的错误,它们编译了,只是没有链接。我该如何解决这个问题。

请注意,我之前使用过类似的功能。这未被检测为错误。

HANDLE myFile=CreateFile("filename.txt",GENERIC_WRITE,FILE_SHARE_WRITE,0,\
CREATE_NEW,
FILE_ATTRIBUTE_NORMAL,0);
char* HeadingStr="a1(m)   a2(m)   a3(m)   a4(m)   a5(m)   a6(m)   a7(m)\
a8(m) a9(m)\n";
WriteFile(myFile,HeadingStr,lstrlen(HeadingStr),0,NULL);
CloseHandle(myFile);

这没有显示任何错误。它在同一个文件中并且之前在不同的函数中出现错误。这是在 WinMain 中,上面是在 WndProc 函数中。

最佳答案

Visual Studio 编译器不支持添加内联声明的 C99。您需要在函数的开头声明所有变量,或者切换到支持 C99 的编译器。

关于c++ - C 和 C++ 中 WINAPI 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17370660/

相关文章:

c++ - 向左旋转就是向右旋转

c# - 在 C++ 中注册 .NET COM 事件的处理程序

c - 在 Antlr4 中保留空格和换行符

c - Fscanf 奇怪地递增文件位置指针

windows - 为什么 perl testing dir -d ""在 Windows 上返回 true?错误与否?

Windows:如何使用 CreateProcess 停止缓冲重定向的 Stdout

c++ - Windows 应用程序的管理员权限

c++ - c++中的段错误(核心转储)

c++ - 菱形继承(钻石问题)——调用所有父函数

c - 什么是双关语?类型双关如何与 C 中的 union 一起使用?