由于某种原因,我无法解释,编译器输出一条错误消息,指出它发现了意外的#else token 。

这发生在文件的开头:

#if defined( _USING_MFC )
   #include "stdafx.h"
#else
   #include <windows.h>
#endif

在这段代码中,没有什么比期望多条(单行)注释更重要了。

.cpp文件中发生此错误。上面看到的是文件的开头。在那之前没有什么。

我尝试在上面定义的代码之前添加以下代码,并且该错误现在是意外的#endif
#if 1
   #include "stdafx.h"
#endif

因此,我怀疑所包含的stdafx.h文件存在问题,该文件包含以下代码:
#ifndef STDAFX_H_INCLUDED
#define STDAFX_H_INCLUDED

#include <Afx.h>
#include <Windows.h>

using namespace ATL;

#endif // STDAFX_H_INCLUDED

真的没有什么特别的。我还要从仅包含#include语句的stdafx.cpp文件中包含此stdafx.h文件,并且可以正确编译。

这是项目预处理器定义:
_DEBUG
_WIN32_WCE=$(CEVER)
UNDER_CE
WINCE
DEBUG
_WINDOWS
$(ARCHFAM)
$(_ARCHFAM_)
_UNICODE
UNICODE
_TERMINAL_FALCONX3_CE6
_NO_CPP_EXCEPTIONS
_DONT_INCLUDE_WS_HEADERS
_USING_MFC

还有一些额外的信息:
使用Visual Studio 2008为Windows CE 6进行编译。

是什么原因造成的?谢谢你。

最佳答案

根据名称 stdafx ,我假设它是一个预编译头。

预编译头必须是文件中的第一个包含(预处理器)指令,您不能在它之前放置任何东西(甚至不是 ifdef)。唯一的异常(exception)是一些注释行,因为无论如何它们都会被忽略。

根据您的示例,您应该将 #ifdef _USING_MFC 放入您的 stdafx.h 中,并在其中包含 Afx.h

关于c++ - 意外#else,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38522047/

10-11 19:02