Let me understand this: you want to know that if the variables defined by the preprocessor (in your case, related to i18n) were unloaded before compilation, so that they (a) take the same amount of memory (between the macro and non-macro version) and ( b) be stored in the same program segment ?
The short answer is: (a) yes and (b) yes-ish .
For the first part, this is easy. The constants defined by the preprocessor are replaced with the whole text by the values of #define 'd by the preprocessor before being passed to the compiler. So, to the compiler,
#define SELECT_MENU "Please select menu"
read like
SomeMethod("Please select menu");
and, therefore, will be identical for all purposes and purposes, except for how it looks to the programmer.
For the second part, this is a little more complicated. If you have constant string literals in program C, they will be allocated either to the data segment of the program, or (if declared as initial content a self-allocating char array), a segment of code dynamically created inside the program and stored either on the stack or on the heap, if I I'm not mistaken (as discussed in the answers to this question ). It depends on how the constant defined by the preprocessor is used in the program .
Given what I said in the first part, if you have char buffer[] = MY_CONSTANT; , it will most likely be stored as a heap allocator and initializer, where it is used in the program, and will increase the code segment (and, possibly, BSS ). If you have someFunction(MY_CONSTANT); or char* c_str = MY_CONSTANT; , then it will most likely be stored in the data segment, and you will get a pointer to this area at runtime. There are many ways this can manifest itself in your real program; the presence of #define 'd variables does not allow us to reliably determine how they will be stored in your compiled program, although if they are used only in a certain way, then you can be pretty sure where it will be stored .
EDIT Modified first half of the answer to give an exact answer to what is given, thanks to the comment by @esm.