gpt4 book ai didi

c - 判断一个函数传递了一个void指针(char int ore Failure)

转载 作者:行者123 更新时间:2023-12-02 08:03:43 26 4
gpt4 key购买 nike

我将一个空指针传递给了一个函数。

由于函数的计算在 int 和 char 之间略有不同,我想在函数中确定我得到的是 int 还是 char 或另一个传递的值。

如果程序员调用此函数时不必传递一个进一步的变量来告诉函数它正在处理什么值,我该如何做到这一点。

举例说明:

int func (void *value) {
if (int) {
//Process
}
if else (char) {
//Process
}
else {
//Failure
}

最佳答案

How can I do this without the programmer calling this function having to pass a further variable to tell the function what value it is processing(?)

如果您可以传递除 void* 之外的其他内容,请使用 _Generic(自 C11 起)减轻调用者的负担并引导代码调用所需的函数。这种方法使用宏来控制代码,类似于 @tadman评论。


void func_int(int x) {
printf("int: %d\n", x);
}

void func_char(char x) {
printf("char: %c\n", x);
}

#define func(X) _Generic((X), \
int: func_int, \
char: func_char \
)(X)

用法。调用者无需指定其中一种已实现的类型:intchar。只需使用 func()

int main() {
int i = 42;
char c = 'X';
func(i);
func(c);
}

输出

int: 42
char: X

关于c - 判断一个函数传递了一个void指针(char int ore Failure),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54135677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com