【问题标题】:Windows.h or StdAfx.h, the first window example in Petzold's book "Programming Windows"Windows.h 或 StdAfx.h,Petzold 的“Programming Windows”一书中的第一个窗口示例
【发布时间】:2019-03-02 15:50:00
【问题描述】:

我从 Petzold 的书《Programming Windows》第 5 版开始学习 winapi。

第一个创建窗口的例子对我来说有点问题。书上是这么写的

#include "windows.h" (only this one)

但是当我使用 Visual Studio C++(在 Windows 7 64 位下)编译它时,它抱怨说

Warning 1 警告 C4627: '#include "Windows.h"': 在查找预编译头使用时跳过

错误 2 错误 C1010:查找预编译头时文件意外结束。您是否忘记在源代码中添加“#include "StdAfx.h""?

我把它改成#include "StdAfx.h"后,就可以正常使用了。

那为什么我不能使用Windows.h,而需要使用StdAfx.h??

【问题讨论】:

    标签: c++ winapi


    【解决方案1】:

    您已将项目配置为使用precompiled headers。在这种情况下,您将windows.h 放入stdafx.h,在所有使用PCH 的编译单元中包含stdafx.h,一切都很好。或者,修改 IDE 中的项目设置以不使用预编译头文件。

    为了清晰和独立于 IDE 的变幻莫测,本书显然假设没有 PCH。如果您开发大量头文件列表,使用 PCH 可以加快构建时间,但现在不使用它可能更简单。

    【讨论】:

    • 另一种解释是,示例从本书的第一版开始,在编译器支持预编译头文件之前。 :-)
    • @Bo - 是的,这就是我所暗示的 IDE 的变幻莫测。过去的美好时光,#include 的意思是它所说的,仅此而已。
    • 另外,应该是#include <windows.h>而不是#include "windows.h"
    • 但这两种方法都有效,那么这两种方式有什么区别吗?
    【解决方案2】:

    在这种情况下,您想更改正在使用 pch 的预编译头文件:

    1. 转到编译器右侧的解决方案。
    2. 右键单击它,
    3. 单击此选项可以选择属性。
    4. 然后选择配置属性,顶部选择All 框的左角。
    5. 按确定。
    6. 现在选择项目并右键单击它。
    7. 选择属性选项。
    8. 转到配置并选择 c/c++ ,单击推荐的标题,通过 点击这个选择
    9. 不选择预编译的头文件。
    10. 按确定

    现在你的问题解决了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多