我正在设计一个通用队列
https://github.com/Bhaumik-Tandan/Generic_queue_in_c
但是,我在为所有数据类型创建通用函数 enqueue 时遇到了问题。
#define enqueue(s,a) _Generic(a, int: enqueuei__19BIT0292, char*: enqueues__19BIT0292,double: enqueuef__19BIT0292,char:enqueuec__19BIT0292,float:enqueuef__19BIT0292)(s,a)
下面这行代码将 'c' 视为整数并调用相应的函数。
enqueue(s,'c')
如果我想调用 char 类型的函数,就需要写
enqueue(s,(char)'c')
我知道在C语言中,字符内部被当作整数处理,但是有没有什么方法可以解决这个问题呢?我不想每次传递字符时都写(char)括号或者创建一个新变量。
'c'
和99
(假设是ASCII)没有任何区别。 - Eugene Sh.enqueue(s, *"c")
可以节省 5 个字符而不必输入类型转换。否则,我认为这是不可能的。 - Yun