【发布时间】:2017-10-06 03:18:03
【问题描述】:
我正在尝试使用rlutil.h,但每次在多个头文件中使用这些函数时,我都会遇到关于 20-30 个变量的多重定义的编译器错误。 rlutil 是一个简单的头文件,用于在 linux 中为终端着色,在 C 和 C++ 中为 windows 着色。
变量是这样的
const RLUTIL_STRING_T ANSI_CONSOLE_TITLE_POST = "\007";
和 typedef 类似的东西
typedef const char* RLUTIL_STRING_T;
我尝试添加自己的 C 防护,但没有奏效。 我尝试将 .h 与我自己的 .h/.c 分层以使用 rlutil.h 函数创建新函数,但问题仍然存在。 我试图将变量设为外部,但这是最糟糕的
我在 ubuntu 上使用 gcc 构建它。 我会在家里用 MVSC2017 试试这个,但我认为行为会是一样的。
有什么想法吗?
我可以提供更多信息。 对不起我的英语我不是母语人士
非常感谢
【问题讨论】:
-
它有
#pragma once,应该防止它被多次包含。 -
是否有可能重复出现在另一个文件中,并且编译器意外发生在该文件上?
-
我看到了,但没有
-
从 rlutil.h 读取 cmets - 每当我看到“Here be magic”和“Here be dragons”时,我都非常担心代码不可移植,并且可能几乎无法在预期目标上运行。
-
错误发生 20-30 次,我不在其他文件中使用这种变量。只需包含我的标题层或标题 2 或更多时间就可以实现。