TI中文支持网
TI专业的中文技术问题搜集分享网站

warning: typedef name has already been declared (with same type) 问题

你好,

我在用2812芯片,用到IQmathLib.h,另外还用到

typedef int int16;
typedef long int32;
typedef unsigned int Uint16;
typedef unsigned long Uint32;
typedef float float32;
typedef long double float64;

ti中有dmctype.h和DSP281x_Device.h两个头文件均定义了上述数据类型,但是不管我用那个头文件参与编译,编译均会出现warning: typedef name has already been declared (with same type) 的警告,查找原因发现是IQmathLib.h中的long数据类型与dmctype.h或DSP281x_Device.h中的long重定义。请问如何使用Q格式和int32才能消除上述警告。谢谢。

yang yigao:

怎么就我的问题没有回答啊。。。。。??

你好,

我在用2812芯片,用到IQmathLib.h,另外还用到

typedef int int16;
typedef long int32;
typedef unsigned int Uint16;
typedef unsigned long Uint32;
typedef float float32;
typedef long double float64;

ti中有dmctype.h和DSP281x_Device.h两个头文件均定义了上述数据类型,但是不管我用那个头文件参与编译,编译均会出现warning: typedef name has already been declared (with same type) 的警告,查找原因发现是IQmathLib.h中的long数据类型与dmctype.h或DSP281x_Device.h中的long重定义。请问如何使用Q格式和int32才能消除上述警告。谢谢。

Eric Ma:

yigao,

       我不认为是long的重定义,应该是你对Uint32或是其他类似Uint16等出现两个不同地方的typedef。例如在IQmath.lib.h中typedef long Uint32,然后在dmctype.h中typedef int Uint32(举例而已,主要说明重定义指的是后面的那个新类型),这时候编译器就会警告你的Uint32重定义了。所以我认为只要找到哪个地方重定义,注释掉就可以了。

       所以我看了一下dmctype.h或DSP281x_Device.h,都出现了一下相同的定义,所以会有编译警告,你只要把其他一个dmctype.h中这些注释掉,然后在需要包含这个dmctype.h的头文件时,换成DSP281x_Device.h即可。

typedef int             int16;typedef long            int32;typedef unsigned int    Uint16;typedef unsigned long   Uint32;typedef float           float32;typedef long double     float64;

       新年快乐!心想事成!

Eric

你好,

我在用2812芯片,用到IQmathLib.h,另外还用到

typedef int int16;
typedef long int32;
typedef unsigned int Uint16;
typedef unsigned long Uint32;
typedef float float32;
typedef long double float64;

ti中有dmctype.h和DSP281x_Device.h两个头文件均定义了上述数据类型,但是不管我用那个头文件参与编译,编译均会出现warning: typedef name has already been declared (with same type) 的警告,查找原因发现是IQmathLib.h中的long数据类型与dmctype.h或DSP281x_Device.h中的long重定义。请问如何使用Q格式和int32才能消除上述警告。谢谢。

yang yigao:

回复 Eric Ma:

所以我看了一下dmctype.h或DSP281x_Device.h,都出现了一下相同的定义,所以会有编译警告,你只要把其他一个dmctype.h中这些注释掉,然后在需要包含这个dmctype.h的头文件时,换成DSP281x_Device.h即可。

可是我就是按照你说的这么办的,依然会有这样的warning。。。。

你好,

我在用2812芯片,用到IQmathLib.h,另外还用到

typedef int int16;
typedef long int32;
typedef unsigned int Uint16;
typedef unsigned long Uint32;
typedef float float32;
typedef long double float64;

ti中有dmctype.h和DSP281x_Device.h两个头文件均定义了上述数据类型,但是不管我用那个头文件参与编译,编译均会出现warning: typedef name has already been declared (with same type) 的警告,查找原因发现是IQmathLib.h中的long数据类型与dmctype.h或DSP281x_Device.h中的long重定义。请问如何使用Q格式和int32才能消除上述警告。谢谢。

Eric Ma:

回复 yang yigao:

yang,

      那你应该在搜索一下看你工程的头文件中哪里还有重复定义。例外,这样的warning不会影响你工程编译。

Eric

赞(0)
未经允许不得转载:TI中文支持网 » warning: typedef name has already been declared (with same type) 问题
分享到: 更多 (0)