C和C++中WINAPI的区别

use*_*841 1 c c++ windows winapi

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

我尝试用C++创建一个WINAPI并尝试链接到这些文件.但正如这里所解释的那样,在最后一个答案中,我非常相信我的代码也存在问题.

现在,我不能像那里那样建议.我的程序很长,我不能弄乱头文件.它们很复杂.

我的选择是完全用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);
Run Code Online (Sandbox Code Playgroud)

问题是它没有编译.说错误如:

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
Run Code Online (Sandbox Code Playgroud)

这些都不是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);
Run Code Online (Sandbox Code Playgroud)

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

Dre*_*wen 6

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