rampadc 29 Posted July 21, 2015 Share Posted July 21, 2015 I wrote some code for ring buffers and I thought of testing it with a MingW with Eclipse on the PC first so I can make sure all functions are working correctly before loading it onto the MCU. Plus, compiling and debugging are faster on the PC compared to loading it onto MSP430. Except I'm getting all these warnings complaining about integer overflows (comparing 8-bit definitions and assigning values to uint8_t) and integer casting pointer problems that I don't get in CCS. These warnings doesn't seem to be serious but when I compiled and run the program, the return values of the functions are all wrong - definition assignments to uint8_t typed variables seems to fail, all of them. The project I'm working on is more software-based than hardware. I've got another guy working purely on another layer which is entirely software-based, though he does call functions from my part. Eventually, our code will be merged. I'm not sure if it's gonna be a problem since he doesn't use CCS for writing C code. For my own testing, it'd be great if you guys can help me with: - Which dialect of C does CCS use? (TI 4.4.4 is my compiler version just in case it's necessary) - How to set up another compiler to be able to compile like the TI compiler? - Can I use CCS's TI compiler to do general purpose C coding for code verification - like a simulator maybe? I'm out of my depth when it comes to compilers so I may have used all the wrong terminology when describing the problem. Cheers. Quote Link to post Share on other sites
oPossum 1,083 Posted July 21, 2015 Share Posted July 21, 2015 SLAU132J MSP430 Optimizing C/C++ Compiler v 4.4 User's Guide 1.3 ANSI/ISO Standard The compiler supports both the 1989 and 1999 versions of the C language and the 2003 version of the C++ language. The C and C++ language features in the compiler are implemented in conformance with the following ISO standards: Quote Link to post Share on other sites
tripwire 139 Posted July 21, 2015 Share Posted July 21, 2015 I'm getting all these warnings complaining about integer overflows (comparing 8-bit definitions and assigning values to uint8_t)... Do you mean something like this? #define SOME_CONSTANT 123 #define OTHER_CONSTANT 34 uint8_t fun(uint8_t arg) { if(arg == SOME_CONSTANT) { arg = OTHER_CONSTANT; } return arg; } That can result in warnings as the integer constants are of type "int" or larger by default. The type of an integer constant is the first of the corresponding list in which its value can be represented: Unsuffixed decimal: int, long int, unsigned long int Unsuffixed octal or hexadecimal: int, unsigned int, long int, unsigned long int Suffixed by the letter u or U: unsigned int, unsigned long int Suffixed by the letter l or L: long int, unsigned long int Suffixed by both the letters u or U and l or L: unsigned long int You can fix that by casting the constant to the appropriate type as part of the definition: #define SOME_CONSTANT ((uint8_t)123) #define OTHER_CONSTANT ((uint8_t)34) ...or by using type suffixes if appropriate (long/unsigned types only). rampadc 1 Quote Link to post Share on other sites
rampadc 29 Posted July 22, 2015 Author Share Posted July 22, 2015 Thanks for the replies guys. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.