MISRA Discussion Forums

Full Version: Rule 19.15 #include ssyntax, bad name
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi,

My header files all include #ifndef / #define 's to stop them being included twice, however apparently the name is bad.

i have things like
#ifndef __DMA_h
#define __DMA_h
#endif


and

#ifndef __flash_h
#define __flash_h
#endif

Also changing to the following gives the same error

#ifndef flash_h
#define flash_h
#endif

any help would be great,

Matt
It may be useful to be more specific about the error and what tool reported the error.
I have a feeling that your checker may be broken as the code looks ok to me.
Hi,
I am using IBM's logiscope

there error reported states


Code:
MISRA_19_15 : Header inclusion
Severity is Required
Description
When a translation unit contains a complex hierarchy of nested header files
it can happen that a particular header file is included more than once.
This can be, at best, a source of confusion. If it leads to multiple or
conflicting definitions, the result can be undefined or erroneous behaviour.
Multiple inclusions of a header file can sometimes be avoided by careful design.
If this is not possible, a mechanism must be in place to prevent the file contents
from being included more than once. A com- mon approach is to associate a macro
with each file; the macro is defined when the file is included for the first time
and used subsequently when the file is included again to exclude the contents
of the file.
For example a file called "ahdr.h" might be structured as follows:
#ifndef AHDR_H
#define AHDR_H
/* The following lines will be excluded by the
preprocessor if the file is included more
than once */
Hi,
I am using IBM's logiscope

there error reported states


Code:
MISRA_19_15 : Header inclusion
Severity is Required
Description
When a translation unit contains a complex hierarchy of nested header files
it can happen that a particular header file is included more than once.
This can be, at best, a source of confusion. If it leads to multiple or
conflicting definitions, the result can be undefined or erroneous behaviour.
Multiple inclusions of a header file can sometimes be avoided by careful design.
If this is not possible, a mechanism must be in place to prevent the file contents
from being included more than once. A com- mon approach is to associate a macro
with each file; the macro is defined when the file is included for the first time
and used subsequently when the file is included again to exclude the contents
of the file.
For example a file called "ahdr.h" might be structured as follows:
#ifndef AHDR_H
#define AHDR_H
/* The following lines will be excluded by the
preprocessor if the file is included more
than once */

you could well be right about the tool not being set up correctly
The code appears to be correct so it would be worth checking your tool configuration. If you have access to a different tool, you could try running your code through that too.