...
Code Block | ||||
---|---|---|---|---|
| ||||
#include <stdio.h> void func(void) { int val = 0; /* ... */ ++val; size_t align = _Alignof(int[val]); printf("%zu, %d\n, align, val); /* ... */ } |
Exceptions
EXP44-C-EX1: Reading a volatile
-qualified value is a side-effecting operation. However, accessing a value through a volatile
-qualified type does not guarantee side effects will happen on the read of the value unless the underlying object is also volatile
-qualified. Idiomatic reads of a volatile
-qualified object are permissible as an operand to a sizeof()
, _Alignof()
, or _Generic
expression, as in the following example:
Code Block | ||||
---|---|---|---|---|
| ||||
void f(void) {
int * volatile v;
(void)sizeof(*v);
} |
Risk Assessment
If expressions that appear to produce side effects are supplied to an operator that does not evaluate its operands, the results may be different than expected. Depending on how this result is used, it can lead to unintended program behavior.
...