This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Type redeclaration

I'm getting the same multiple errors of the kind that were asked about in a thread from 2010.

http://www.keil.com/forum/17977/

However the link at the bottom of that thread (that I assume has the answer) is dead. Does anyone have any suggestions?

The errors are of the form:

C:\Keil\ARM\Inc\ST\STM32f10x\STM32F10x_type.h(23): error: #256: invalid redeclaration of type name "s32" (declared at line 470 of C:\Keil\ARM\Inc\ST\STM32F10x\STM32F10x.h")

I'm getting similar error messages for all the other types s8, s16, u8, u16, u32, etc. and also for things like SET/RESET and ENABLE/DISABLE

Now I see that STM32F10x_type.h and STM32F10x.h are both in the same folder. Each defines these types differently as follows:

STM32F10x_type.h line 23 is: typedef signed long s32;

STM32F10x.h, line 470 is: typedef int32_t s32;

In the block at the top of the file STM32F10x_type.h, it says that it is V2.0.1, dated 06/13/2008. In the comment block at the top of the file STM32F10x.h, it says that it is V3.4.0, dated 10/15/2010. However the file save date for both is 10/17/2011 at 5:01pm so they must have come from the same download.

My questions:
1) Why is there a duplication of these defines in these two files in the same folder?
2) Why are they defined differently?
3) Where does the type "int32_t" come from because it is certainly not a native C data type while "signed long" is a native C data type?
4) What do I have to do to fix this issue so my project will compile?

Thanks!

0