LANGUAGE
Application
-Cq
None
None
None
None
This option propagates const and volatile qualifiers for structures. That means, if all members of a structure are constant, the structure itself is constant as well. The same happens with the volatile qualifier. If the structure is declared as constant or volatile, all its members are constant or volatile, respectively. Consider the following example.
The source code in the following listing declares two structs, each of which has a const member.
struct { const field; } s1, s2; void foo(void) { s1 = s2; // struct copy s1.field = 3; // error: modifiable lvalue expected }
In the above example, the field in the struct is constant, but not the struct itself. Thus the struct copy s1 = s2 is legal, even if the field of the struct is constant. But, a write access to the struct field causes an error message. Using the -Cq option propagates the qualification (const) of the fields to the whole struct or array. In the above example, the struct copy causes an error message.