gpt4 book ai didi

c++ - 错误 C4430 : missing type specifier

转载 作者:行者123 更新时间:2023-11-28 00:43:01 25 4
gpt4 key购买 nike

尝试编译这个项目时,我遇到了 2 个错误,我不知道如何解决。

1>initialization.h(6): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>initialization.h(6): error C2146: syntax error : missing ',' before identifier 'diskSpaceNeeded'

Here is the file where the error happens:

Initialization.h

#pragma once
extern bool CheckStorage(const DWORDLONG diskSpaceNeeded);

初始化.cpp

#include "Initialization.h"
#include "../Main/EngineStd.h"
#include <shlobj.h>
#include <direct.h>

//
// CheckStorage
//
bool CheckStorage(const DWORDLONG diskSpaceNeeded)
{
// Check for enough free disk space on the current disk.
int const drive = _getdrive();
struct _diskfree_t diskfree;

_getdiskfree(drive, &diskfree);

unsigned __int64 const neededClusters =
diskSpaceNeeded /(diskfree.sectors_per_cluster*diskfree.bytes_per_sector);

if (diskfree.avail_clusters < neededClusters)
{
// if you get here you don’t have enough disk space!
ENG_ERROR("CheckStorage Failure: Not enough physical storage.");
return false;
}
return true;
}

我认为包含有问题,但我找不到错误发生的地方。

最佳答案

您的 Initialization.h 使用 DWORDLONG,它不是 C++ 标准的一部分。这意味着您需要先定义它,然后才能使用它。

但是,您的 Initialization.cpp 首先包含 Initialization.h,然后包含定义 Windows 特定内容的 ../Main/EngineStd.h。因此,编译器在尝试按照您提供的顺序解析包含时会报错。

这也是当您切换顺序以在 Initialization.h 之前包含 ../Main/EngineStd.h 时它起作用的原因。

包含文件包含他们自己使用的东西通常被认为是好的做法。因此,您的 Initialization.h 应该包含用于定义 DWORDLONG 的文件的 include 指令。您当前的解决方案可能有效,但当您尝试在其他地方包含 Initialization.h 并且不记得它需要哪些其他包含时,它会让您头疼。

关于c++ - 错误 C4430 : missing type specifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17825585/

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