如果我想将
我猜我需要复制,因为我认为它一旦超出作用域就会被释放。
__FILE__
传递给一个对象,我需要复制字符串还是只需将其指针存储为const char*
?我猜我需要复制,因为我认为它一旦超出作用域就会被释放。
__FILE__
的指针提供任何保证吗?__FILE__
扩展为普通字符串字面量。只要您仅仅是在读取它,您可以只使用像 const char*
这样的常量。
const char *filename = __FILE__;
__FILE__
扩展可能会产生相同或不同的地址。const char *f1 = __FILE__;
const char *f2 = __FILE__;
assert(f1 == f2); // May or may not fire
我不确定这会在什么时候影响到你,但知道这点还是好的。
__FILE__
,则两者都将引用包含相同字符串的静态数组对象(假设没有#line
指令),但它们可能是具有不同地址的相同或不同的对象。 - Keith Thompson__FILE__
字面量的指针都将变得无效。 - Sander Mertens__FILE__
是一个预处理器宏,在预处理器运行时被替换为字符串字面量。任何使用它的地方就好像在源代码中输入了"filename.c"
一样。它不是指针,也没有作用域,并且不会被释放 - 这些都是编译时和运行时的概念,不适用于它。