所以,
我有这个代码我正在尝试更新。它是为visual studio 6编写的,我试图在visual studio 2010中编译它。
在stdafx.h中,它包括afx.h和afxwin.h以及程序运行所需的一些其他东西。值得注意的是,在其他头文件中使用了CString。
在stdafx.h中包含的顶部,我添加了#pragma消息,以验证它是否正在首先编译。头文件顶部还有一个抛出错误。我可以从编译器输出中看到stdafx.h是先编译的,所以这很好。
然而,有错误。 (CString没有被识别为类型。)所以,我决定确保它完成所有包含。所以,我在#include之后添加了另一条#pragma消息,并且没有打印该消息。
这是否意味着实际上并未包括在内?
答案 0 :(得分:1)
您的解释有点难以理解,但我认为您正在遇到正常编译和预编译标题之间的差异。
使用预编译的头文件,编译器会正常处理第一个文件(新项目向导会为此设置stdafx.cpp)。在处理用于预编译控制的项目选项中设置的包含文件(通常是stdafx.h)之后,编译器将其状态保存到.pch文件。
对于每个其他文件,编译器都会浏览文件而不进行任何处理,只需查找包含文件即可。然后它读取.pch文件,加载保存的状态,并继续正常解析和编译。
这种设计的一个结果是stdafx.cpp中#include "stdafx.h"
以上的任何行都成为状态的一部分,并被所有其他文件看到。其他文件中#include "stdafx.h"
以上的行只是被忽略了。
答案 1 :(得分:0)
问题与使用CString的typedef有关。发布VS 6,这是不可能的。我只是手动更改了引用,现在就编译了。
答案 2 :(得分:0)
将我的评论传递给答案。
VS中的CString 6次是一个类,之后它变成了一个模板。也许它有什么应有的?
问题与使用有关 使用CString的typedef。发布VS 6, 那是不可能的。我改变了 手工引用,并编译 现在