John Goche wrote:
A common C++ trend is to use
const int foo = 10;
where some C programmers would have used
#define FOO 10
in order to avoid preprocessor overheads.
I wonder whether it is considered ok to have the former statement
appear in header files. When making accessible a nonconst variable
in a header file I would use the extern keyword and define it in a
corresponding source file. Does this principle apply to const variables
as well or is it ok to place such definitions in source files?
Thanks,
JG
Yes. The extern principle apply also here. If you would have put the
definition itself in the header file, you will have an instance of
'foo' in each obj the included this header file.
As for the define Vs. const issue - There are many opinions of the pros
and cons of both. In general, I personally prefer the const method,
because there is a type check when using the const var. In some cases
it is more comfortable to use define...
As far as I know, in restpect of the foot print (the binary size) or
run time efficiency there is a very little difference, if at all.