C++ 中的头文件是如何工作的?我已经在 .h 文件中实现了这些类,当两个文件中有 #include 时,会出现以下错误:

files.h:14:7: error: redefinition of ‘class abstract_file’
files.h:14:20: error: previous definition of ‘class abstract_file’`

每个类和枚举多次。
谁能解释一下?

最佳答案

您只能包含一次定义,但可以多次包含标题。要解决这个问题,请添加:

#pragma once

到每个头文件的顶部。

虽然 #pragma once 相对常见,但如果您使用的是较旧的编译器,则可能不支持它。在这种情况下,您需要依靠手动包含保护:
#ifndef MY_HEADER_H
#define MY_HEADER_H

...

#endif

(注意每个头文件需要用唯一的字符串替换 MY_HEADER_H )

关于c++ - 重新定义 C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2823330/

10-16 17:23