解决方法(这是别人提供的方法):建立一个.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头文件。这是什么问题啊?是不是要将上述建立的文件与工程中的文件关联起来? 
 
 

解决方案 »

  1.   

    在cpp文件的头部包含#include "stdafx.h";
      

  2.   

    将对应的.cpp文件,属性改一下也可以。
    配置属性->c/c++->预编译头->创建/使用预编译头:选择不使用预编译头。
      

  3.   

    以下解释摘自MSDN:Visual C++ 概念:生成 C/C++ 程序   致命错误 C1010在查找预编译头指令时遇到意外的文件结尾用 /Yu 指定的包含文件没有列在源文件中。您是否不小心删除了 #include 语句,而该语句引用了 /Yu 所需的 .h 文件?
    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 属性。