[previous] 0811 [next] [C] The glue operator '##' may only appear in a '#define' preprocessing directive.
Constraint violations REFERENCE - ISO:C90-6.1.5 Operators - Constraints

This is a constraint error

The glue operator, ##, can only be used in a #define directive. Its function is to join the 2 tokens on either side of it.

For example:


/*PRQA S 752,2017,3122,3408,3429,3447,3625 ++*/

#define GLUE(A,B) A##B

extern void foo(int p);
extern int  abcdef;

void ft(void)
{
    foo( GLUE( abc, def ) );        /* OK */
    foo( abc ## def );              /* Message 0811 and others */
}


MISRA-C:2004 Rules applicable to message 0811:

Rule  1.1  (Required) All code shall conform to ISO/IEC 9899:1990 C programming language, ISO 9899, amended and corrected by ISO/IEC 9899/COR1:1995, ISO/IEC 9899/AMD1:1995, and ISO/IEC 9899/COR2: 1996192


QA·C Source Code Analyser 8.1
MISRA-C:2004 Compliance Module 3.2
© 2012 Programming Research.
www.programmingresearch.com
Personality Groups | Glossary | Message Index | MISRA-C:2004 Rule Index Contents