当前位置:  开发笔记 > 编程语言 > 正文

__FILE__可以在C++中用const char*引用?

如何解决《__FILE__可以在C++中用constchar*引用?》经验,为你挑选了2个好方法。

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

可以__FILE__保存在const char* 永远类型的变量中,不需要使用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 

    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".这只是巧合吗?



1> 小智..:

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

const char* getStr()
{
    return __FILE__; 
}

testFILE.cpp,然后它就像你写的那样

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

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



2> Cheers and h..:

__FILE__扩展为字符串文字.您可以在类型变量中存储指向字符串文字(的第一个字符)的指针char const*.文字的生命周期与程序执行相同.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有