我想问一下跨翻译单元依靠字符串文字地址是否可移植?即:
给定文件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
在同一个翻译单元中呢?如果字符串文字位于同一翻译单元中,这是否可靠?
桃花长相依
慕神8447489