gpt4 book ai didi

c++ - __FILE__ 可以在 C++ 中被 const char* 引用吗?

转载 作者:可可西里 更新时间:2023-11-01 18:17:04 25 4
gpt4 key购买 nike

阅读从 http://www.almostinfinite.com/memtrack.html 链接的 memTrack 库后我有一个问题

__FILE__ 可以保存在类型为 const char* 的变量中 forever 并且不需要使用 strdup()BlockHeader::Stamp 不是使用 strdup() 来分配 __FILE__ 字符串吗?


void BlockHeader::Stamp(char const *filename, int lineNum, char const *typeName)
{
myFilename = filename; // don't use strdup(filename) to assign?
myLineNum = lineNum;
myTypeName = typeName;
}

举个例子继续描述我的问题:

    //testFILE.cpp
#include <iostream>

const char* getStr()
{
return __FILE__;
}

void Print()
{
std::cout << __FILE__ << std::endl;
}

int main()
{
std::cout << getStr() << std::endl;
Print();

return 0;
}

经测试,二进制testFILE可以打印两行“testFILE.cpp”。这只是巧合吗?

最佳答案

__FILE__ 在预处理时扩展为字符串文字。如果你把

const char* getStr()
{
return __FILE__;
}

testFILE.cpp 中,就像你写的一样

const char* getStr()
{
return "testFILE.cpp";
}

适用于所有字符串文字的相同规则也适用于扩展 __FILE__ 的结果的字符串文字:它们指向的字符串在应用程序的整个运行过程中都存在。

关于c++ - __FILE__ 可以在 C++ 中被 const char* 引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34616782/

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