gpt4 book ai didi

c++ - #include 被忽略

转载 作者:行者123 更新时间:2023-11-28 08:28:36 25 4
gpt4 key购买 nike

所以,

我有这段代码,我正在尝试更新。它是为 visual studio 6 编写的,我正试图让它在 visual studio 2010 中编译。

在 stdafx.h 中,它包括 afx.h 和 afxwin.h 以及程序运行所需的一些其他内容。值得注意的是,在其他头文件中使用了 CString。

在 stdafx.h 中包含的顶部,我添加了一条#pragma 消息,以验证它是否首先被编译。头文件的顶部也有一个会引发错误。我可以从编译器输出中看到首先编译了 stdafx.h,这很好。

但是,出现了错误。 (CString 没有被识别为一种类型。)因此,我决定确保它通过所有包含。因此,我在#include 之后添加了另一条#pragma 消息,但该消息并未打印出来。

这是否意味着实际上没有被包括在内?

最佳答案

您的解释有点难以理解,但我认为您遇到了正常编译和预编译 header 之间的差异。

使用预编译头文件,编译器正常处理第一个文件(新项目向导为此设置 stdafx.cpp)。在处理完在预编译控制的项目选项中设置的包含文件(通常是 stdafx.h)后,编译器将其状态保存到 .pch 文件中。

对于所有其他文件,编译器会在不进行任何处理的情况下浏览文件,只查找包含文件。然后它读取.pch 文件,加载保存的状态,并继续正常解析和编译。

此设计的一个结果是,stdafx.cpp 中 #include "stdafx.h" 上方的任何行都成为状态的一部分,并被所有其他文件看到。其他文件中 #include "stdafx.h" 以上的行将被忽略。

关于c++ - #include 被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3103968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com