__func__和__FUNCTION__有区别吗
时间: 2023-07-21 19:28:43 浏览: 167
`__func__` 和 `__FUNCTION__` 表示的都是当前函数的名称,但是它们的用法和作用域有所不同。
`__func__` 是 C99 标准中新增加的一个预定义宏,它表示当前函数的名称,类型为 const char[],只能在函数内部使用。例如:
```c
void func() {
printf("%s\n", __func__);
}
```
`__FUNCTION__` 是 GCC 特有的预定义宏,它也表示当前函数的名称,类型为 const char[],可以在函数内部和外部使用。例如:
```c
void func() {
printf("%s\n", __FUNCTION__);
}
int main() {
printf("%s\n", __FUNCTION__);
func();
return 0;
}
```
需要注意的是,`__func__` 只能在 C99 及以上版本的编译器中使用,而 `__FUNCTION__` 可以在 GCC 编译器中使用。
相关问题
vb.net sub和function的区别
在Visual Basic .NET (VB.NET) 中,Sub 和 Function 是两种不同类型的用户自定义过程(Methods):
1. **Sub** (也称为 Subroutine 或 Procedure):主要用于执行一系列操作,通常不返回值。当你调用一个 Sub 时,它的作用就像一个简单的命令集,用于完成特定任务。例如,事件处理程序、数据库记录的更新等。在VB.NET中,Sub 开始于 `Sub` 关键字,结束于 `End Sub`,并且不需要有 Return 关键字。
```vb.net
Sub Greet(name As String)
Console.WriteLine("Hello, " & name)
End Sub
```
2. **Function** (有时写作 Func,在VB.NET中很少见):它不仅执行操作,还会返回一个值。无论是否进行了实际计算,Function 都会有一个明确的返回类型。比如,从数据库查询结果,或者对输入进行某种运算后返回结果。在VB.NET中,Function 的语法与 Sub 类似,但它后面跟着 Return 关键字,随后是表达式的结果。
```vb.net
Function AddNumbers(a As Integer, b As Integer) As Integer
Return a + b
End Function
```
总结来说,Sub 主要是为了执行操作而存在的,而 Function 除了执行操作还有返回值的功能。当你需要某个操作完成后返回一个结果时,应该选择 Function;如果只是想执行一些无需返回值的代码,就用 Sub。
阅读全文