__FUNCTION__ __FUNCDNAME__区别
时间: 2024-01-10 20:21:10 浏览: 33
__FUNCTION__ 和 __FUNCDNAME__ 是两个不同的宏,用于获取函数名。它们的区别如下:
1. __FUNCTION__:
- 在 C++ 中,__FUNCTION__ 宏返回一个字符串,表示当前函数的名称。
- 在 C 中,__FUNCTION__ 宏返回一个字符串,表示当前函数的名称。但是,如果编译器不支持该宏,则返回一个空字符串。
- __FUNCTION__ 宏返回的函数名不包含类名或命名空间。
2. __FUNCDNAME__:
- __FUNCDNAME__ 宏只在 Windows 平台上可用,用于获取当前函数的名称。
- __FUNCDNAME__ 宏返回一个字符串,表示当前函数的名称,包括类名和命名空间(如果有的话)。
- __FUNCDNAME__ 宏的返回值是一个编译器特定的字符串,格式可能因编译器而异。
下面是一个示例,演示了如何使用这两个宏:
```c++
#include <iostream>
void foo()
{
std::cout << "__FUNCTION__: " << __FUNCTION__ << std::endl;
std::cout << "__FUNCDNAME__: " << __FUNCDNAME__ << std::endl;
}
int main()
{
foo();
return 0;
}
```
输出结果:
```
__FUNCTION__: foo
__FUNCDNAME__: ?foo@@YAXXZ
```
相关问题
__FUNCDNAME__全称
__FUNCDNAME__是一个宏定义,它的全称是Function Name。它在C/C++语言中用于获取当前函数的名称。下面是一个示例代码:
```c
#include <stdio.h>
void func() {
printf("Function name: %s\n", __FUNCDNAME__);
}
int main() {
func();
return 0;
}
```
输出结果为:
```
Function name: func
```
__function__
__FUNCTION__和__func__都是C语言中的预定义标识符,用于获取当前函数的名称。
在引用中,__FUNCTION__是一个宏,可以在函数内部使用,它会返回当前函数的名称。通过将__FUNCTION__作为参数传递给show_name函数,可以将当前函数的名称打印出来。
在引用中,__func__是C99标准引入的一个常量字符数组,它也可以用于获取当前函数的名称。与__FUNCTION__不同的是,__func__不是一个宏,而是一个隐式声明的常量字符数组。
以下是两个例子来演示__FUNCTION__和__func__的使用:
1. 使用__FUNCTION__宏获取当前函数的名称:
```c
#include <iostream>
void show_name(const char* name) {
std::cout << name << std::endl;
}
void myfunc() {
show_name(__FUNCTION__); // 输出:myfunc
}
void foo() {
show_name(__FUNCTION__); // 输出:foo
}
```
2. 使用__func__常量字符数组获取当前函数的名称:
```c
#include <iostream>
void show_name(const char* name) {
std::cout << name << std::endl;
}
void myfunc() {
show_name(__func__); // 输出:myfunc
}
void foo() {
show_name(__func__); // 输出:foo
}
```