| Method |
Evaluated at |
Consumes Memory |
Viewable by Debuggers |
Type Checking |
Compile-time constant expression |
| Enumerations |
compile time |
no |
yes |
yes |
yes |
| const-qualified |
run time |
yes |
yes |
yes |
no |
| Macros |
preprocessor |
no |
no |
no |
yes |
|
| Function |
Closes file descriptors |
Flushes buffers |
Deletes temporary files |
Calls atexit() functions |
| abort() |
unspecified |
unspecified |
unspecified |
no |
| _Exit(status) |
yes |
unspecified |
unspecified |
no |
| exit(status) |
yes |
yes |
yes |
yes |
| return from main() |
yes |
yes |
yes |
yes |
| Method |
Code Increase |
Manages Allocated Resources |
Automatically Enforceable |
| Return value |
Big (30—40%) |
no |
yes |
| Address argument |
Bigger |
no |
no |
| Global indicator |
Medium |
no |
yes |
| longjmp() |
Small |
no |
n/a
|
|
|