Vir*_*721 4 c++ precompiled-headers c-preprocessor
由于某些原因我无法解释,编译器输出的错误表明它发现了一个意外的#else令牌.
这发生在文件的开头:
#if defined( _USING_MFC )
#include "stdafx.h"
#else
#include <windows.h>
#endif
Run Code Online (Sandbox Code Playgroud)
在此之前没有任何代码可以期待几个(单行)注释.
在.cpp文件中发生此错误.您在上面看到的是文件的开头.之前没有任何事情.
我尝试在上面定义的代码之前添加以下代码,错误现在是意外的#endif
#if 1
#include "stdafx.h"
#endif
Run Code Online (Sandbox Code Playgroud)
所以我怀疑包含stdafx.h文件存在问题,该文件包含以下代码:
#ifndef STDAFX_H_INCLUDED
#define STDAFX_H_INCLUDED
#include <Afx.h>
#include <Windows.h>
using namespace ATL;
#endif // STDAFX_H_INCLUDED
Run Code Online (Sandbox Code Playgroud)
它没什么特别的.我还从stdafx.cpp文件中包含这个stdafx.h文件,该文件只包含#include语句,并且它正确编译.
以下是项目预处理器定义:
_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
Run Code Online (Sandbox Code Playgroud)
还有一些额外的信息:使用Visual Studio 2008编译Windows CE 6.
会导致什么?谢谢.
Dut*_*tow 10
根据名称stdafx,我假设它是一个预编译的头.
预编译器头必须是文件中的第一个include(预处理器)指令,不能在它之前放置任何东西(甚至不是ifdef).唯一的例外是一些注释行,因为无论如何都会被忽略.
根据你的例子,你应该把它#ifdef _USING_MFC放进你的stdafx.h,并包括Afx.h在那里.