gpt4 book ai didi

c++ - 意外#else

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:30 27 4
gpt4 key购买 nike

由于某种我无法解释的原因,编译器正在输出一个错误,指出它发现了一个意外的#else 标记。

这发生在文件的开头:

#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,我认为它是一个预编译头文件。

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

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

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

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