c++11学习笔记(1)-__func__预定义标识符

原创
2022-11-23
4643
3

__func__预定义标识符

  • __func__ 的基本功能是返回函数的名字。

他的基本是使用可以查看下面的例子:

void printHello(void)
{
    std::cout << __func__ << std::endl;
}

void printWorld(void)
{
    std::cout << __func__ << std::endl;
}

printHello();
printWorld();

结果是
printHello
printWorld

  • 按照标准定义,编译器会隐式的在函数定义后定义__func__ 标识符。

比如上面的例子:

void printHello(void)
{
    static const char* __func__ = "printHello";
    std::cout << __func__ << std::endl;
}
  • c++11__func__ 允许使用在类或者结构体中。

比如下面的这个例子:

#include <iostream>

class A
{
public:
    A() : m_MyFunName(__func__) {
        std::cout << m_MyFunName << std::endl;
    }

    void classAFunction(void) {
        std::cout << __func__ << std::endl;
    }

private:
    char *m_MyFunName = "";
};

void printHello(void)
{
    std::cout << __func__ << std::endl;
}

void printWorld(void)
{
    std::cout << __func__ << std::endl;
}

int main(int argc, char** argv)
{
    printHello();
    printWorld();

    A a;
    a.classAFunction();

    system("pause");
    return 0;
}

输出结果为:
printHello
printWorld
A
classAFunction

  • __func__ 作为函数的默认参数是不允许的。
void function(char* pFunc = __func__) // 编译报错
不会飞的纸飞机
扫一扫二维码,了解我的更多动态。

下一篇文章:c++11学习笔记(2)- std::function