除其他事项外,C11还增加了"匿名结构和联盟".
我四处寻找,但无法找到匿名结构和工会何时有用的明确解释.我问,因为我不完全明白它们是什么.我得知它们之后是没有名字的结构或联合,但我总是(必须?)将其视为一个错误,所以我只能设想一个用于命名结构的用法.
试图用C语言重载C编程语言中的函数_Generic。找到了示例:
这个例子:
#include <stdio.h>
#include <math.h>
void display_float(float dispid) ;
void display_int(int dispid) ;
void display_void(void) ;
#define display(x) _Generic((x), \
float: display_float, \
int: display_int, \
default: display_float \
)(x)
void display_void(void){
printf("display id: 0\n") ;
}
void display_float(float dispid){
printf("display id: %f\n", dispid) ;
}
void display_int(int dispid){
printf("display id: %d\n", dispid) ;
}
void main(void){
display(5) ;
display(6.5) ;
}
Run Code Online (Sandbox Code Playgroud)
现在,我也想使用来重载该函数display()。意味着该函数将接收a void,调用该函数display_void()并显示0。似乎无法做到这一点。任何帮助,将不胜感激。
编辑1:
另外,请参阅此处的示例。我认为,其中一个示例是传递指向void的指针。可以实施吗?