none
warning C4627 RRS feed

  • 问题

  •   我经常遇到warning C4627这个难缠的问题,后来在一个不知名的博客上看到解决方案,原来一个警告引发了所有的错误和警告,网上说“不使用预编译头文件”即可,所有我想问问,“不使用预编译头文件”的原理是什么,我vc6.0能这样用,为什么在vs2008下却出现了这种异常。怎么把“预编译头”设置成默认的“不使用预编译头文件”,因为每一次修改都耗时间!

    见截图:[url=http://tu.6.cn/pic/show-new/id/7999924][img]http://i3.6.cn/cvbnm/21/f4/db/95431056c15caf1fc816dd8ebe77295c.jpg[/img][/url]

    2010年5月10日 9:51

答案

  •   我经常遇到warning C4627这个难缠的问题,后来在一个不知名的博客上看到解决方案,原来一个警告引发了所有的错误和警告,网上说“不使用预编译头文件”即可,所有我想问问,“不使用预编译头文件”的原理是什么,我vc6.0能这样用,为什么在vs2008下却出现了这种异常。怎么把“预编译头”设置成默认的“不使用预编译头文件”,因为每一次修改都耗时间!

    见截图:[url=http://tu.6.cn/pic/show-new/id/7999924][img]http://i3.6.cn/cvbnm/21/f4/db/95431056c15caf1fc816dd8ebe77295c.jpg[/img][/url]

    预编译头文件, 是个历史遗留问题。呵呵。 主要原因是这样的,MFC 类库太过庞大,继承关系也比较复杂。 微软为了提高编译效率,缩短程序编译时间,就发明了一个预编译头文件。直白的说就是stdAfx.h 其中Afx 就是MFC 的内部开发代号(Application Framework 加个X可能是为了炫吧)。 这个头文件主要作用是,把程序中各个文件共同需要引用的头文件或者声明放在一起。由编译器统一做一次预处理。以便提高编译速度。 当你用Visual Studio 添加一个类的时候,Visual Studio 默认就会认为你的这个类要引用预编译头文件,因此会把PCH选项置为打开状态。 但事实上并不是所有的情况都需要PCH,所以你有的时候得手动关掉它。
    2010年5月13日 3:18
    版主

全部回复

  • 你好!

         这个主要是你的编码不当引起的,你直接复制VC6.0的代码或是按过去的样式编码就容易发生问题,因为你的代码文件中使用的#include 指令中指定的文件并没有包括在stdafx.h中,所以有这样的警告,你可以看看使用VS2008建立的项目是怎样的,和你的代码并不一样!

         不同版本开发工具生成代码并不一样,导致了这个问题!VS2008中编写C++ 代码的方式已经改变了!


    周雪峰
    2010年5月12日 12:00
    版主
  • 你好!

         这个主要是你的编码不当引起的,你直接复制VC6.0的代码或是按过去的样式编码就容易发生问题,因为你的代码文件中使用的#include 指令中指定的文件并没有包括在stdafx.h中,所以有这样的警告,你可以看看使用VS2008建立的项目是怎样的,和你的代码并不一样!

         不同版本开发工具生成代码并不一样,导致了这个问题!VS2008中编写C++ 代码的方式已经改变了!


    周雪峰

    那么vc6.0跟vs2008到底在那些方面的不同呢?
    2010年5月12日 14:16
  • 你好!

         具体你可以参考微软提供的文档,很难在一个帖子中说清楚这个问题啊!


    周雪峰
    2010年5月12日 14:58
    版主
  • 你好!

         具体你可以参考微软提供的文档,很难在一个帖子中说清楚这个问题啊!


    周雪峰

     恩  刚安装了MSDN,那关键字呢,麻烦给个关键字吧!
    2010年5月12日 15:19
  • 你好!

         具体可以参考:

    http://msdn.microsoft.com/zh-cn/library/60k1461a%28VS.80%29.aspx

         希望对你有帮助!


    周雪峰
    2010年5月13日 0:47
    版主
  •   我经常遇到warning C4627这个难缠的问题,后来在一个不知名的博客上看到解决方案,原来一个警告引发了所有的错误和警告,网上说“不使用预编译头文件”即可,所有我想问问,“不使用预编译头文件”的原理是什么,我vc6.0能这样用,为什么在vs2008下却出现了这种异常。怎么把“预编译头”设置成默认的“不使用预编译头文件”,因为每一次修改都耗时间!

    见截图:[url=http://tu.6.cn/pic/show-new/id/7999924][img]http://i3.6.cn/cvbnm/21/f4/db/95431056c15caf1fc816dd8ebe77295c.jpg[/img][/url]

    预编译头文件, 是个历史遗留问题。呵呵。 主要原因是这样的,MFC 类库太过庞大,继承关系也比较复杂。 微软为了提高编译效率,缩短程序编译时间,就发明了一个预编译头文件。直白的说就是stdAfx.h 其中Afx 就是MFC 的内部开发代号(Application Framework 加个X可能是为了炫吧)。 这个头文件主要作用是,把程序中各个文件共同需要引用的头文件或者声明放在一起。由编译器统一做一次预处理。以便提高编译速度。 当你用Visual Studio 添加一个类的时候,Visual Studio 默认就会认为你的这个类要引用预编译头文件,因此会把PCH选项置为打开状态。 但事实上并不是所有的情况都需要PCH,所以你有的时候得手动关掉它。
    2010年5月13日 3:18
    版主
  •   我经常遇到warning C4627这个难缠的问题,后来在一个不知名的博客上看到解决方案,原来一个警告引发了所有的错误和警告,网上说“不使用预编译头文件”即可,所有我想问问,“不使用预编译头文件”的原理是什么,我vc6.0能这样用,为什么在vs2008下却出现了这种异常。怎么把“预编译头”设置成默认的“不使用预编译头文件”,因为每一次修改都耗时间!

    见截图:[url=http://tu.6.cn/pic/show-new/id/7999924][img]http://i3.6.cn/cvbnm/21/f4/db/95431056c15caf1fc816dd8ebe77295c.jpg[/img][/url]

    预编译头文件, 是个历史遗留问题。呵呵。 主要原因是这样的,MFC 类库太过庞大,继承关系也比较复杂。 微软为了提高编译效率,缩短程序编译时间,就发明了一个预编译头文件。直白的说就是stdAfx.h 其中Afx 就是MFC 的内部开发代号(Application Framework 加个X可能是为了炫吧)。 这个头文件主要作用是,把程序中各个文件共同需要引用的头文件或者声明放在一起。由编译器统一做一次预处理。以便提高编译速度。 当你用Visual Studio 添加一个类的时候,Visual Studio 默认就会认为你的这个类要引用预编译头文件,因此会把PCH选项置为打开状态。 但事实上并不是所有的情况都需要PCH,所以你有的时候得手动关掉它。
    谢谢您的解释, MVP lee
    2010年5月13日 3:57