如何创建文本文件?
CreateFile("1",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
CREATE_NEW,
FILE_FLAG_OVERLAPPED,
NULL);
掷
1> ------ Build build:项目:test2,配置:调试Win32 ------ 1 GT;测试2.cpp 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(126):错误C2065:'GENERIC_READ':未声明的标识符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(126):错误C2065:'GENERIC_WRITE':未声明的标识符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(128):错误C2065:'NULL':未声明的标识符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(129):错误C2065:'CREATE_NEW':未声明的标识符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(130):错误C2065:'FILE_FLAG_OVERLAPPED':未声明的标识符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(131):错误C2065:'NULL':未声明的标识符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(125):错误C3861:'CreateFile':找不到标识符 ==========构建:0成功,1个失败,0个最新,0个跳过==========
答案 0 :(得分:2)
在.h
或.cpp
个文件的顶部中包含以下Windows头文件:
#include <windows.h>
这应解决与未定义符号相关的问题,例如GENERIC_WRITE
和CreateFile
。正如另一张海报所提到的,您通常应该在.cpp
文件中编写代码,只在头文件中声明常量或类,同时将方法实现与常规函数一起放在.cpp
文件中。
一旦超出这一点,与CreateFileW
相关的问题需要更多解释:
默认情况下,从Visual Studio模板生成的Windows应用程序链接到UNICODE
C / C ++预处理器宏来指示这一点。定义UNICODE
时,预处理器将符号CreateFile
定义为扩展为实际基础Windows函数名称CreateFileW
,其中W
后缀表示它是“宽字符”,即Unicode,功能。如果未定义UNICODE
宏(可以通过各种Visual Studio项目设置覆盖),则CreateFile
将扩展为CreateFileA
符号,该符号是ANSI字符串版本的名称(函数的A
用于ANSI)。 99%的时间你应该使用UNICODE
的默认设置,因为所有现代版本的Windows都在内部使用Unicode字符。
由于CreateFileW
采用Unicode字符串参数,您需要传递L"1"
(即宽字符串文字)或使用TEXT
宏(例如TEXT("1")
)生成与是否定义UNICODE
编译器开关相对应的正确字符串类型。
以下是有关TEXT
:link的MSDN文章的链接。