It is not possible to do what you want.
There are three points in time to make initialization:
compile-time
link-time
run-time
Compile-time initialization needs the value at compilation - you may use macros for that, but not the value of a variable from a different compilation unit (a different .c file) as that is simply unavailable outside that compilation unit.
Link-time initialization does not exist for simple values, it exists only for addresses of variables/functions within other compilation units. So, you can initialize a variable with the address of something in a different compilation unit, and that address will be substituted during linking.
Run-time initialization is also an option but you didn't like that...
Normally, people define macros in a header file (which can be included into multiple .c files) for such a purpose, if run-time initialization is not desired.