Why is the MISRA-C:2012 directive D4.10 raised on #pragma once?
20 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
MathWorks Support Team
el 22 de Feb. de 2019
Respondida: MathWorks Support Team
el 22 de Feb. de 2019
The MISRA-C:2012 directive 4.10 says that "Precautions shall be taken in order to prevent the contents of a header file being included more than once."
In C it is possible to prevent header file to be included more than once thanks to the pragma #pragma once.
But Polyspace will raise a violation of D4.10 on this pragma. Why?
Respuesta aceptada
MathWorks Support Team
el 22 de Feb. de 2019
The #pragma once directive, even if supported by most of the compilers, is not part of the C standard.
It is then “implementation-defined”, and in some corner cases, where copied include files or include files with same name are in different include directories, it can lead to unintended behavior.
The MISRA-C:2012 standard does not list this pragma in the description of the directive D4.10.
The two forms given in the standard are:
#if !defined ( identifier )
#define identifier
...
#endif
and
#ifndef identifier
#define identifier
...
#endif
Polyspace follows the MISRA-C:2012 standard and does not consider #pragma once as a valid include guard.
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Command-Line Only Options en Help Center y File Exchange.
Productos
Versión
Aún no se ha introducido una versión.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!