gpt4 book ai didi

c++ - 跨翻译单元的字符串文字地址

转载 作者:可可西里 更新时间:2023-11-01 18:15:53 26 4
gpt4 key购买 nike

<分区>

我想问一下跨翻译单元依赖字符串文字地址是否可移植?即:

一个给定的文件 foo.c 引用了一个字符串文字 "I'm a literal!",在其他给定的文件中依赖它是否正确且可移植文件,例如 bar.csame string literal "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

在同一个翻译单元中呢?如果字符串文字在相同翻译单元中,这是否可靠?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com