I have a C project where all code is organized in *.c
/*.h
file pairs, and I need to define a constant value in one file, which will be however also be used in other files. How should I declare and define this value?
Should it be as static const ...
in the *.h
file? As extern const ...
in the *.h
file and defined in the *.c
file? In what way does it matter if the value is not a primitive datatype (int
, double
, etc), but a char *
or a struct
? (Though in my case it is a double
.)
Defining stuff inside *.h
files doesn't seem like a good idea generally; one should declare things in the *.h
file, but define them in the *.c
file. However, the extern const ...
approach seems inefficient, as the compiler wouldn't be able to inline the value, it instead having to be accessed via its address all the time.
I guess the essence of this question is: Should one define static const ...
values in *.h
files in C, in order to use them in more that one place?