如果我想传递__FILE__
给一个对象,我是否需要复制该字符串,或者我可以将其指针存储为const char*
?
我猜我需要制作一份副本,因为我认为它一旦超出范围就会自由.
指针是否__FILE__
提供任何保证?
__FILE__
扩展为正常的字符串文字.所以只要你只是阅读它,你就可以使用const char*
类似的东西
const char *filename = __FILE__;
Run Code Online (Sandbox Code Playgroud)
由于字符串文字具有静态存储持续时间,因此指针在整个程序中保持有效.
如果你想要一些可修改的东西,你需要一份副本并自己管理它的生命周期.
有关预定义标准宏的完整列表以及有关它们扩展的信息,请查看本文档页面上的"预定义宏"部分.
正如@Keith Thompson在他的评论中正确指出的那样,不同的扩展__FILE__
可能会或可能不会产生相同的地址,即:
const char *f1 = __FILE__;
const char *f2 = __FILE__;
assert(f1 == f2); // May or may not fire
Run Code Online (Sandbox Code Playgroud)
我不确定什么时候会咬你,但我知道这很好.
归档时间: |
|
查看次数: |
341 次 |
最近记录: |