解决方法(这是别人提供的方法):建立一个.h文件和对应的.cpp文件,在.cpp文件中定义该全局变量,在.h中用extern引出。在应用的.h文件中包含建立的这个头文件,该变量就成为了全局变量,全局的结构、函数都可以这样做,结构定义在这个头文件中,函数在这个头文件中申明,在.cpp文件中实现。这样做也便于管理。
呵呵......
VC用的太少了,只是调过几个程序。我刚才按上面的做法做了一个demo,在工程中添加了global.cpp文件和gloabal.h文件。
在gloabal.h文件添加了:extern BOOL StartDrawRect;
在global.cpp文件添加了: BOOL StartDrawRect=FALSE;
但是运行时出错了,提示错误为: fatal error C1010: unexpected end of file while looking for precompiled header directive.
我在使用到StartDrawRect变量的文件已经包含了gloabal.h头文件。这是什么问题啊?是不是要将上述建立的文件与工程中的文件关联起来?
呵呵......
VC用的太少了,只是调过几个程序。我刚才按上面的做法做了一个demo,在工程中添加了global.cpp文件和gloabal.h文件。
在gloabal.h文件添加了:extern BOOL StartDrawRect;
在global.cpp文件添加了: BOOL StartDrawRect=FALSE;
但是运行时出错了,提示错误为: fatal error C1010: unexpected end of file while looking for precompiled header directive.
我在使用到StartDrawRect变量的文件已经包含了gloabal.h头文件。这是什么问题啊?是不是要将上述建立的文件与工程中的文件关联起来?
配置属性->c/c++->预编译头->创建/使用预编译头:选择不使用预编译头。
Visual C++ 编译器选项 /Yu(使用预编译头文件)请参见
编译器选项 | 设置编译器选项
/Yu[filename]
此选项指示编译器在当前编译过程中使用现有的预编译头。选项 说明
/Yu 此选项指定在生成期间使用预编译头 (.pch) 文件。必须已使用“创建预编译头文件”(/Yc) 创建 PCH。
/Yufilename 编译器将所有在 .h 文件之前出现的代码视为已经过预编译。它刚好跳到与 .h 文件关联的 #include 指令之外,使用 .pch 文件中包含的代码,然后编译 filename 之后的所有代码。
filename 参数是头文件的名称,该文件被使用 #include 预处理器指令包含在源文件中。对于创建预编译头的 /Yc 选项和任何随后指示使用预编译头的 /Yu 选项,包含文件的名称必须相同。对于 /Yc,filename 指定预编译停止的位置;编译器预编译直到 filename 的所有代码,并用包含文件的基名称和 .pch 扩展名命名得到的预编译头。
在命令行上,/Yu 和 filename 之间不允许有空格。如果指定 /Yu 选项但不带文件名,则源程序必须包含指定预编译头 .pch 文件的文件名的 #pragma hdrstop 杂注。在这种情况下,编译器将使用由 /Fp 指定的预编译头(.pch 文件)。编译器跳到该杂注所在的位置,从由杂注指定的预编译头文件还原编译状态,然后只编译杂注后面的代码。如果 #pragma hdrstop 没有指定文件名,编译器将查找其名称从扩展名为 .pch 的源文件的基名称导出的文件。还可以使用 /Fp 选项指定不同的 .pch 文件。如果指定 /Yu 选项但不带文件名,且未能指定 hdrstop 杂注,则生成错误信息,且编译不成功。注意 如果 /Ycfilename 和 /Yufilename 选项出现在同一命令行上并且都引用相同的文件名,则 /Ycfilename 将优先,预编译直到指定文件(包含该文件)的所有代码。此功能简化了生成文件的编写。
有关预编译头的更多信息,请参见: /Y(预编译头)
创建预编译头文件
在 Visual Studio 开发环境中设置此编译器选项 打开此项目的“属性页”对话框。有关详细信息,请参见设置 Visual C++ 项目属性。
单击“C/C++”文件夹。
单击“预编译头”属性页。
修改“通过文件创建/使用 PCH”属性或“创建/使用预编译头”属性。
以编程方式设置此编译器选项请参见 PrecompiledHeaderThrough 属性和 UsePrecompiledHeader 属性。