Versions Compared

Key

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

...

In this compliant solution, pi is declared as a const-qualified object, allowing the constant to have scope.

Code Block
bgColor#ccccff
const float const pi = 3.14159;
float degrees;
float radians;
/* ... */
radians = degrees * pi / 180;

...

In this non-compliant code example, max is declared as a const-qualified object. While declaring non-integer constants as const-qualified object is the best that can be done in C, for integer constants we can do better. Declaring immutable integer values as const-qualified objects still allows the programmer to take the address of the object. Also, const-qualified integers cannot be used in locations where an integer constant is required, such as the value of a case constant.

Code Block
bgColor#FFCCCC
const int const max = 15;
int a[max]; /* invalid declaration outside of a function */
const int const *p;

p = &max; /* legal to take the address of a const-qualified object */

...

Code Block
bgColor#ccccff
enum { max = 15 };
int a[max]; /* OK */
const int const *p;

p = &max; /* error: '&' on constant */

...