__FUNCTION__和__func__的区别
时间: 2023-10-23 14:14:42 浏览: 527
func_DWT.zip_DWT function_func_DWT
`__FUNCTION__` 和 `__func__` 都是 C 语言中用于获取当前函数名的内置变量,但是它们的使用方式有所不同,具体区别如下:
1. `__FUNCTION__` 是 GCC 扩展,而 `__func__` 是标准 C99 中引入的。
2. `__FUNCTION__` 会被展开为当前函数的函数名字符串常量,但是在嵌套函数中,它会被展开为完整的函数名,包括命名空间和类名等。而 `__func__` 只会被展开为当前函数的函数名字符串常量。
3. 在 C99 标准中,`__func__` 是保留关键字,不能作为函数名或变量名使用。而 `__FUNCTION__` 不是保留关键字,在某些编译器中可能会定义为宏而不是变量。
因此,在通常情况下,建议使用 `__func__` 来获取当前函数名,这是 C99 标准中定义的,具有可移植性和兼容性。而 `__FUNCTION__` 可以作为一种扩展使用,在某些特定场景下可能会有用。
阅读全文