gpt4 book ai didi

c++ - StdAfx + 头文件 - 在 MFC 应用程序中的包含顺序

转载 作者:搜寻专家 更新时间:2023-10-31 00:22:37 25 4
gpt4 key购买 nike

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

  1. 资源.h
  2. StdAfx Dependancy.h
  3. stdafx.h
  4. StdAfx Dependancy.cpp
  5. 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)
{
}

我在主函数中为 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++ - StdAfx + 头文件 - 在 MFC 应用程序中的包含顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3090473/

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