Строковый буквальный адрес в единицах перевода [дубликат]

На этот вопрос уже есть ответ здесь:

Адреса двух символьных указателей на разные строковые литералы одинаковы 10 ответов

Я хотел бы спросить, является ли это портативным, чтобы полагаться на строковый литеральный адрес через единицы перевода? то есть:

Данный файлfoo.c имеет ссылку на строковый литерал"I'm a literal!"это правильно и переносимо полагаться на то, что в другом данном файле,bar.c в частности, чтотот же строковый литерал "I'm a literal!" будет иметьтот же адрес памяти? Учитывая, что каждый файл будет переведен на отдельного.o файл.

Для лучшей иллюстрации следует пример кода:

# File foo.c
/* ... */
const char * x = "I'm a literal!"

# File bar.c
/* ... */
const char * y = "I'm a literal!"

# File test.c
/* ... */
extern const char * x;
extern const char * y;
assert (x == y); //Is this assertion going to fail?

И пример командной строки gcc:

gcc -c -o foo.o -Wall foo.c
gcc -c -o bar.o -Wall bar.c
gcc -c -o test.o -Wall test.c
gcc -o test foo.o bar.o test.o

Как насчет того же переводчика? Будет ли это надежным, если строковые литералы находятся втак же блок перевода?

Ответы на вопрос(2)

Ваш ответ на вопрос