C++ __文件可以由C+中的const char*引用+;?

C++ __文件可以由C+中的const char*引用+;?,c++,macros,C++,Macros,在阅读了链接自的memTrack库后,我有一个问题 \uu文件\uu是否可以保存在类型为const char*的变量中,并且不需要使用strdup()?BlockHeader::Stamp是否使用strdup()分配\uuuu文件\uuuu字符串 请举例说明我的问题: //testFILE.cpp #include <iostream> const char* getStr() { return __FILE__; }

在阅读了链接自的memTrack库后,我有一个问题

\uu文件\uu
是否可以保存在类型为
const char*
的变量中,并且不需要使用
strdup()
BlockHeader::Stamp
是否使用
strdup()
分配
\uuuu文件\uuuu
字符串



请举例说明我的问题:

    //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.cpp
#包括
常量字符*getStr()
{
返回文件;
}
作废打印()
{

std::cout
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
在预处理时被扩展为字符串文本

const char* getStr()
{
    return __FILE__; 
}
testFILE.cpp
中,就好像您编写了

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

适用于所有字符串文字的相同规则也适用于扩展
\uuuuu文件\uuuuuu
后产生的字符串文字:它们指向的字符串在整个应用程序运行过程中都存在。

\uuuu文件\uuuuuu
扩展为字符串文字。您可以存储指向(第一个字符)的指针在类型为char const*
的变量中使用字符串文本。该文本的生存期与程序执行的时间相同。

谢谢。我知道了

C/C++中的字符串文本保存在静态数据段中,因此该文本的生存期与程序执行相同

我把字符串文字和局部变量搞混了


再次感谢。

我强调了“永远”,因为在我看来,这是主要的审问。一个有趣的问题,祝贺你
const char* getStr()
{
    return "testFILE.cpp";
}