keil编译时,出现错误:
C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h(56): error: #240: duplicate specifier in declaration
typedef signed char int8_t;
C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h(56): error: #84: invalid combination of type specifiers
typedef signed char int8_t;
头文件a.h
#define int8_t unsigned char;
头文件stdint.h
typedef unsigned char int8_t;
当在另一文件同时引用这两个头文件时就可能出现先这个错误。
test.c
#include "a.h"
#include <stdint.h>
int8_t test = 0;
如果a.h在stdint.h之前引用就会出现这个错误,因为这时int8_t首先会替换成unsigned char,之后 unsigned char由stdint.h中的定义又会被替换成int8_t,这显然是错误的。
如果a.h在stdint.h之后引用就不会出现这个错误。