Hello,
I am trying to compile a project for STM32F103CB, but it doesn't seem to work properly. First of all, this project compiles and runs on IAR SDK. I ported it on uVision 5 SDK, and, after quite some pain, I made it compile. The problem is, I am still getting this warning:
Libraries\X_Lib\src\X_Configuration.c(438): warning: #223-D: function "roundf" declared implicitly GAverage[0] = (u32)(roundf((float)GAverage[0]/(float)(GSampleCount)));
although I am including the math.h file in X_Configuration.c:
#include <math.h>
in math.h, roundf is defined as
extern _ARMABI_FPEXCEPT double round(double /*x*/); extern _ARMABI_FPEXCEPT float roundf(float /*x*/); _ARMDEFLD1(round);
...what am I doing wrong? Is there some precise setting I overlooked?
Thanks a lot for your time!
indeed. In fact, there is an option in Project -> Options for target ... -> C/C++ tab to define/undefine Preprocessor Symbols.
I'm afraid you missed my point. The problem is not about where you make that #define, whether in source or in the compiler flags. It's about whether you're allowed to #define that macro at all. If you're not, you might break a lot more than you fixed.
Now, the official definition of the C programming language says you're not allowed to do this, because names starting on a double underscore are reserved to the language's implementors (e.g.: Keil or IAR). So you would need some other instance to give you this permission, thus overriding the language standard. The only applicable candidate to be that instance is the documentation of the compiler or library you found this in. So please: look it up.