Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

For characters in the basic character set, it doesn't matter does not matter which data type is used, except for type compatibility. Consequently, it is best to use plain char for character data for compatibility with standard string-handling functions.

In most cases, the only portable operators on plain char types are assignment and equality operators (=, ==, != ). An exception is the translation to and from digits. For example, if the char c is a digit, c - '0' is a value between 0 and 9.

...

The following noncompliant code example simply shows the standard string-handling function strlen() being called with a plain character string, a signed character string, and an unsigned character string. The strlen() functions function takes a single argument of type const char *.

...

Compiling at high warning levels in compliance with recommendation MSC00-C. Compile cleanly at high warning levels causes warnings to be issued when

  • converting from unsigned char[] to const char * when char is signed.
  • converting from signed char[] to const char * when char is defined to be unsigned.

Casts are required to eliminate these warnings, but excessive casts can make code difficult to read and hide legitimate warning messages.

...

Fortify SCA

section

can

Can detect violations of this rule with CERT C Rule Pack, except cases involving signed char.

EDG

section

charsgnd

section

Tool

Version

Checker

Description

Section

V. 5.0

 

Section
Section

 

 

 

section

Compass/ROSE

 

 

 

ECLAIR

 

section
Include Page
ECLAIR_V
ECLAIR_V
Section

Fully

Implemented

implemented.

Related Vulnerabilities

Search for vulnerabilities resulting from the violation of this rule on the CERT website.

...

CERT C++ Secure Coding Standard: STR04-CPP. Use plain char for characters in the basic character set

ISO/IEC 9899:19992011 Section 6.2.5, "Types"

MISRA Rule 6.1, "The plain char type shall be used only for the storage and use of character values"

...