Jon*_*Jon 7 c embedded middleware typedef
在C编程语言中,管理用于与多个中间件(操作系统,协议栈)供应商的平台无关的冗余typedef的最佳方法是什么?
例如:
target.h
/* inclusion lock etc */
typedef char CHAR;
typedef unsigned char BYTE;
typedef unsigned short int WORD;
/* ... more of the same ... */
OS_types.h
/* inclusion lock etc */
typedef char CHAR;
typedef unsigned char BYTE;
typedef unsigned short int WORD;
/* ... more of the same ... */
在某些时候,编译器会识别出它有两个冗余的typedef符号并且出现错误,因为C中的定义根本不允许这样做.
小智 6
在不修改供应商头部的情况下执行此操作的一种可能方法是将预处理器与一些头包装器一起使用,例如
mytypes.h
#define BYTE VENDOR1_BYTE
#include <vendor1/types.h>
#undef BYTE
#define BYTE VENDOR2_BYTE
#include <vendor2/types.h>
#undef BYTE
typedef unsigned char BYTE;
这将导致供应商的代码生成不同的typedef,但希望映射到相同的实际类型(示例中的unsigned char).如果供应商对相同的类型名称使用不同的基础类型,则该方法可能不起作用.