We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I'm using uVision 5.14 and this is the error I receive when I try to use the '#message' directive:
error: #11-D: unrecognized preprocessing directive #message
Am I missing something?
Are you missing something? That depends on what expectations you have and what reference documentation you based your expectations on.
But you might consider:
#define CHARLIE #if defined(CHARLIE) #warning "Charlie was defined" #else #error "Charlie is undefined" #endif
"#warning" will give you a warning printout with your message text in the build log but will build the project.
*** Using Compiler 'V5.05 update 2 (build 169)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin' Build target 'Target 1' compiling main.c... main.c(4): warning: #1215-D: #warning directive: "Charlie was defined" #warning "Charlie was defined" main.c: 1 warning, 0 errors linking... Program Size: Code=312 RO-data=456 RW-data=0 ZI-data=608 ".\Objects\test-1768.axf" - 0 Error(s), 2 Warning(s). Build Time Elapsed: 00:00:00
While #error" will produce a compilation error with your text message:
Build target 'Target 1' compiling main.c... main.c(7): error: #35: #error directive: "Charlie is undefined" #error "Charlie is undefined" main.c: 0 warnings, 1 error ".\Objects\test-1768.axf" - 1 Error(s), 0 Warning(s). Target not created. Build Time Elapsed: 00:00:00
Exactly what are your needs for non-warning and non-error messages during the build?
What I wanted to use the #message for is a status output indicating build's parameters. The difference between #message and #warning is mainly the intention: warning means there is something potentially wrong; message is more neutral. Plus warning output just takes more space in the build log.
I think the language standard only has #error
I think both #message and #warning are proprietary extensions - which, therefore, may not be supported.