typedef的冲突类型错误(timer_t)

时间:2017-02-04 10:53:47

标签: c gcc typedef

我目前正在使用ARM GCC编译器编译我的代码。我的代码有一个RTOS,它有一个 types.h 文件,它将type_fs指定为unsigned long。由于ARM GCC编译器还具有clock_t的typedef,因此我遇到了相同的冲突类型问题。

我尝试过包含GCC中的 .h 文件,并且在某些论坛中建议取消定义,但它也无法正常工作。我没有看到GCC中的 time.h 文件也包含在我的任何项目源文件中。

2 个答案:

答案 0 :(得分:2)

一个简单的解决方法是

typedef unsigned long int custom_clock_t;
#define clock_t custom_clock_t

这样编译器会在用clock_t编译文件之前替换每次出现的custom_clock_t,并且冲突将消失,同时保持熟悉的clock_t语法不变。

答案 1 :(得分:1)

您可以尝试通过执行一些预处理器魔术来解决它:

#include <sys/types.h> // Or whatever is the other header that defines clock_t
#define clock_t types_clock_t
#include <types.h>
#undef clock_t

clock_t my_variable;
types_clock_t my_other_variable;

考虑到此解决方案很精细,并且在某些情况下会导致进一步的问题,例如您无法控制使用<types.h> {{1}或类似的东西。