小编Bha*_*dan的帖子

如何将 char 视为 c 中 _generic 中的 char

我正在致力于设计一个通用队列

https://github.com/Bhaumik-Tandan/Generic_queue_in_c

但是当我为所有类型的数据类型创建通用函数队列时,我遇到了一个问题

#define enqueue(s,a) _Generic(a, int: enqueuei__19BIT0292, char*: enqueues__19BIT0292,double: enqueuef__19BIT0292,char:enqueuec__19BIT0292,float:enqueuef__19BIT0292)(s,a)
Run Code Online (Sandbox Code Playgroud)

下面的行将“c”视为 int 并调用相应的函数。

enqueue(s,'c')
Run Code Online (Sandbox Code Playgroud)

而如果我想调用 char 函数,我需要写

enqueue(s,(char)'c')
Run Code Online (Sandbox Code Playgroud)

我知道在 C 中字符在内部被视为整数,但是有什么方法可以解决这个问题,我不想在括号中写入 (char) 或每次传递字符时创建一个新变量

c generics

5
推荐指数
1
解决办法
266
查看次数

我想在 C 中为二维数组创建一个通用选择器

如果二维数组是浮点类型,我想调用第一个函数,否则调用第二个函数,我该如何实现?

 void printff(int n,float m[n][n])
    {
        for(int i=0;i<n;i++){
        for(int j=0;j<n;j++)
        printf("\t%f",m[i][j]);
        printf("\n");
        }
    }
    
void printfi(int n,int m[n][n])
{
    for(int i=0;i<n;i++){
    for(int j=0;j<n;j++)
    printf("\t%d",m[i][j]);
    printf("\n");
    }
}

#define print(a,b) _Generic(b,int*[sizeof(a)]:printfi,float*[sizeof(a)]:printff)(a,b)
Run Code Online (Sandbox Code Playgroud)

c generics late-binding

3
推荐指数
1
解决办法
59
查看次数

标签 统计

c ×2

generics ×2

late-binding ×1