-2

我对包含矢量模块有疑问。似乎与其他模块存在冲突。这是结构:

在模拟.h 中:

#pragma once
#ifndef SIMULATION
#define SIMULATION

#include <ostream>
#include <sstream>
#include <string>

#include <algorithm>
#include <cstdlib>
// #include <vector>

#include "File.h"
...
void afficherResultat(std::vector<Client> sortie);
...
#endif

和 File.h 文件:

#pragma once

#ifndef FILE
#define FILE

#include <vector>

class File {
    ...
    std::vector<Client> l;
    ...    
};

#endif

我得到 108 个错误,开头是:C4091 警告和 C4430、C2065、C4229 错误……有些人强调包含的顺序。有任何想法吗 ?

4

1 回答 1

1

您正在为作为标准库一部分的标识符定义宏:

#define FILE

(有关内容,请参见https://en.cppreference.com/w/cpp/io/c#TypesFILE)。

这样做是被禁止的,并且会导致非常奇怪的错误。

而是使用尽可能唯一的名称,如包含守卫,例如 INCLUDE_GUARD_FILE_H.

如果您有一个包含保护,那么也不需要#pragma once哪种非标准方法来解决包含保护也应该防止的双重包含问题。

此外,您还没有ClientFile.h. 可能缺少一些#include用于头文件定义的内容。Client

于 2018-12-08T21:08:12.343 回答