Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
5.5 and groups of preprocessing
#1
such as
Code:
#ifndef NO_TAG
static void log (const char *format, ...)
{
}
#else
#if defined(__STDC_VERSION__)
#define log(...) do { } while (0)    // here
#endif
#endif
and, the identifier(log) exists after preprocssing has been performed:
Code:
static void log (const char *format, ...)   // does it apply to #define log ?
{
}
I have a question regarding rule 5.5: does the function(log) apply to #define log ?
<t></t>
Reply
#2
Rule 5.5 amplification states that
Quote: name of macros that exist prior to preprocessing
be distinct from
Quote: identifiers that exist after preprocessing.
Prior to preprocessing there is a macro called "log".

If the code is compiled when NO_TAG is not defined, the code after preprocessing will include a function identifier "log". Under these circumstances, there is a violation of rule 5.5.
Posted by and on behalf of the MISRA C Working Group
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)