编程语言
首页 > 编程语言> > c – StdAfx头文件 – MFC应用程序中包含的顺序

c – StdAfx头文件 – MFC应用程序中包含的顺序

作者:互联网

我正在使用Visual Studio 2005.我创建了一个名为“StdAfx dependancy”的基于MFC的控制台应用程序. IDE为我创建了以下文件.

> Resource.h
> StdAfx Dependancy.h
> stdafx.h
> StdAfx Dependancy.cpp
> stdafx.cpp

我在下面添加了另一个带有Helper.h和Helper.cpp的类CHelper.

Helper.h:

#pragma once

class CHelper
{
public:
    CHelper(void);
    ~CHelper(void);
};

Helper.cpp

#include "StdAfx.h"
#include "Helper.h"

CHelper::CHelper(void)
{
}

CHelper::~CHelper(void)
{
}

我在main函数中为CHelper创建了一个对象;为实现这一点,我在StdAfx Dependancy.cpp的第一行添加了Header.h文件,如下所示;我有以下错误.

d:\codes\stdafx dependancy\stdafx
dependancy\stdafx dependancy.cpp(33) :
error C2065: ‘CHelper’ : undeclared
identifier
d:\codes\stdafx
dependancy\stdafx dependancy\stdafx
dependancy.cpp(33) : error C2146:
syntax error : missing ‘;’ before
identifier ‘myHelper’
d:\codes\stdafx
dependancy\stdafx dependancy\stdafx
dependancy.cpp(33) : error C2065:
‘myHelper’ : undeclared identifier

但是当我在stdafx.h之后包含它时,错误消失了.为什么?

// Stdafx dependancy.cpp : Defines the entry point for the console application.
//

#include "Helper.h"

#include "stdafx.h"
#include "Stdafx dependancy.h"

// #include "Helper.h" --> If I include it here, there is no compilation error

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// The one and only application object

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
    int nRetCode = 0;

    // initialize MFC and print and error on failure
    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
    {
        // TODO: change error code to suit your needs
        _tprintf(_T("Fatal Error: MFC initialization failed\n"));
        nRetCode = 1;
    }
    else
    {
        CHelper myHelper;
    }

    return nRetCode;
}

解决方法:

这个链接必须给你一些线索.
Purpose of stdafx.h

之前定义的行
 #include“stdafx.h”被编译器忽略.因此,如果您想要实际包含这些文件,则需要在#include“stdafx.h”之后包含它们.

希望很清楚.

标签:c,compiler-errors,visual-c,mfc,stdafx-h
来源: https://codeday.me/bug/20190923/1814466.html