No, in general, you should not use const objects created in C to create name constants. To create a named constant in C, you must use either macros ( #define ) or enumerations. In fact, the C language has no constants, in the sense that you seem to mean it. (C in this respect is significantly different from C ++)
In C, the concepts of constant and constant expression are defined very differently than C ++. The constant C means a literal value, for example 123 . Here are some examples of constants in C
123 34.58 'x'
Constants in C can be used to create constant expressions. However, since const objects of any type are not constants in C, they cannot be used in constant expressions and, therefore, you cannot use objects with a constant that require constant expressions.
For example, the following is not a constant
const int C = 123;
and since the above C not constant, it cannot be used to declare an array type in file scope
typedef int TArray[C];
It cannot be used as a case label
switch (i) { case C: ; }
It cannot be used as a bit field width.
struct S { int f : C; };
It cannot be used as an initializer for an object with a static storage duration.
static int i = C;
It cannot be used as an enum initializer.
enum { E = C };
ie it cannot be used wherever a constant is required.
This may seem counter-intuitive, but that is how C. is defined.
That's why you see these many #define -s in the code you're working with. Again, in C, an object that has const has very limited use. They are basically completely useless as "constants," so in C you basically have to use #define or enumerations to declare true constants.
Of course, in situations where an object corresponding to const works for you, i.e. it does what you want, it really surpasses macros in many ways, since it is copied and printed. You should probably prefer objects where applicable, but in general you will have to consider the above limitations.