Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Deleted MISRA 2004 Rule 19.5 from Related Guidelines

...

The following noncompliant code contains references to headers that may exist independently in various environments but can be ambiguously interpreted by a C-compliant compiler.:

Code Block
bgColor#FFcccc
langc
#include "Library.h"
#include <stdio.h>
#include <stdlib.h>
#include "library.h"

#include "utilities_math.h"
#include "utilities_physics.h"

#include "my_library.h"

/* Rest of program */

...

This compliant solution avoids the ambiguity by renaming the associated files to be unique under the preceding constraints.:

Code Block
bgColor#ccccFF
langc
#include "Lib_main.h"
#include <stdio.h>
#include <stdlib.h>
#include "lib_2.h"

#include "util_math.h"
#include "util_physics.h"

#include "my_library.h"

/* Rest of program */

The only solution for mitigating ambiguity of a file, such as my_libraryOLD.h, is to rename old files with either a prefix (that would fall within the first eight characters) or add an extension (such as my_library.h.old).

Exceptions

PRE08-EX1: While the Although the C Standard requires only the first eight characters in the file name to be significant, most modern systems have long file names, and compilers on such systems can typically differentiate them. Consequently, long file names in headers may be used, provided that all the implementations to which the code is ported can distinguish between these file names.

...

Bibliography

[ISO/IEC 9899:2011]Section 6.10.2, "Source File Inclusion"

...