在c++中使用typedef void VOID;报错C2120对于所有类型void非法
时间: 2024-04-27 08:24:08 浏览: 7
在C++中,void是一种合法的类型,不需要使用typedef重新定义。因此,将void重新定义为VOID可能会导致编译错误C2120,提示对于所有类型void非法。如果你想定义一个void类型的别名,可以直接使用typedef void MyVoid;等价于typedef void VOID;。这样定义后,就可以使用MyVoid作为void的别名来定义变量、函数参数、函数返回类型等。但是需要注意,使用别名来代替已有的类型可能会导致代码可读性降低,建议只在特定场景下使用。
相关问题
typedef void *HANDLE;
"typedef void *HANDLE;"是一段C语言代码,它定义了一个名为HANDLE的类型,它被定义为一个指向void类型的指针。 这种用法是为了增加代码的可读性和可维护性,通过给指针起一个更有意义的名字,让代码更易于理解。在这个定义中,HANDLE就相当于void类型的指针,可以将其理解为一个披着句柄皮的指针。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [C++它 typedef void *HANDLE](https://blog.csdn.net/weixin_33742618/article/details/86424877)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [typedef void *HANDLE](https://blog.csdn.net/qq_44716817/article/details/122575623)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
typedef void(*vector_handle)(void *excinfo,)
### 回答1:
typedef void(*vector_handle)(void *excinfo) 是在 C/C++ 中定义一种新类型,该类型是一个指向函数的指针,该函数没有返回值,接受一个 void * 类型的参数 excinfo。
例如,可以使用这种类型定义一个函数指针变量:
```vector_handle handler;```
然后可以将函数地址赋给该变量:
```handler = &my_function;```
最后,可以通过调用该变量来调用函数:
```handler(excinfo);```
### 回答2:
typedef void(*vector_handle)(void *excinfo,)
这是一个C语言中的typedef语句,用于定义一个函数指针类型 vector_handle。这个函数指针类型可以指向没有返回值(void)且接受一个void指针参数(void *excinfo)的函数。
一般情况下,函数指针可以用来作为函数的参数,也可以用来作为函数的返回值。在这个例子中,我们可以使用 vector_handle 类型的函数指针作为参数传递给其他函数,以便在某些情况下调用该函数指针所指向的函数。
此外,函数指针也可以用作回调函数的机制。当我们在函数中注册一个函数指针,那么在特定的事件发生时,可以调用该函数指针。对于 vector_handle 类型的函数指针,它可以在事件发生时调用该函数指针所指向的函数,并且可以将相关的参数(如异常信息)传递给该函数。
总而言之,typedef void(*vector_handle)(void *excinfo) 这个语句定义了一个函数指针类型,可以用于传递函数指针作为参数或者作为回调函数的机制。
### 回答3:
typedef void(*vector_handle)(void *excinfo,) 是一个 C 语言的 typedef 声明,它定义了一个函数指针类型 vector_handle。
函数指针类型 vector_handle 可以指向一个参数类型为 void* 的函数,该函数的返回类型为 void,该函数可能被用于处理异常信息。
这样的函数指针类型通常用于实现回调函数机制,即在某些特定情况下(例如发生异常),调用者可以通过调用 vector_handle 来处理异常信息。
函数指针类型 vector_handle 的声明为:
typedef void(*vector_handle)(void *excinfo,)
这里的 void *excinfo 是一个指向 void 类型的指针,它可以作为函数的参数传递给 vector_handle 所指向的函数。excinfo 可以用来传递异常信息的地址,从而使得处理函数能够获取异常信息并进行相应的处理。
总结起来,typedef void(*vector_handle)(void *excinfo,) 是一个使用函数指针实现异常处理的声明,它定义了一个函数指针类型 vector_handle,该函数指针可以指向一个参数类型为 void* 的函数,该函数的返回类型为 void。函数指针 vector_handle 可以用于处理异常信息。