如何解决为什么#ifndef 在复杂的 cmake 项目中不起作用
我有以下情况,一个复杂的 cmake 项目由应用程序和多个库组成。其中两个依赖于一个公共库。
- 项目
- 应用程序(取决于 LibA 和 LibB ...)
- LibA(取决于 LibC)
- LibB(取决于 LibC)
- LibC(通用)
- ...
LibA 和 LibB 包含来自 LibC 的 types.h 文件。 types.h 已经#ifndef 保护。
#ifndef INC_PROT_TYPES_H__
#define INC_PROT_TYPES_H__
bla bla
typedef enum EStatus
eOk,eError
}EStatus;
#endif
如果正在编译项目(Visual Studio 2019),则会出现以下错误:
错误 G20EDCCE1:重新声明枚举器 'EStatus''
如果 types.h 成为另外的 #pragma once
编译工作没有任何错误。
有人可以解释为什么会发生这种情况吗?实际上#ifndef应该和#pragma once一样!
提前致谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。