gpt4 book ai didi

c - 组合两个 _Generic 时出现错误

转载 作者:行者123 更新时间:2023-11-30 15:10:27 24 4
gpt4 key购买 nike

我想在C中组合两种类型来调用函数(例如具有不同列和行的乘法 vector 和矩阵):

#define CC_FIRST(a)        _Generic((a), int: int8d)
#define CC_SECOND(b) _Generic((b), int: int16d)
#define CC_SP(first, second) first ## second
#define TEST(a,b) CC_SP(CC_FIRST(a), CC_FIRST(b)) (a,b)

int test1 = 10;
int test2 = 25;

TEST(10,25); // => int8dint16d(10,25), but not work

还有这个:

pasting ")" and "CC_FIRST" does not give a valid preprocessing token #define TEST(a,b) CC_SP(CC_FIRST(a), CC_FIRST(b)) (a,b)

expected identifier or '(' before '_Generic' #define CC_FIRST(a) _Generic((a), int: int8d)

pasting ")" and "CC_FIRST" does not give a valid preprocessing token #define TEST(a,b) CC_SP(CC_FIRST(a), CC_FIRST(b)) (a,b)

'int8d' undeclared (first use in this function) #define CC_FIRST(a) _Generic((a), int: int8d)

expected ';' before '_Generic' #define CC_FIRST(a) _Generic((a), int: int8d) ^

我做错了什么?

最佳答案

_Generic 根本不是您所期望的。特别是它不由预处理器评估。预处理器对类型一无所知,只知道文本标记。因此,连接前一部分的 _Generic() 永远无法工作,因为它们不会形成有效的 token 。

关于c - 组合两个 _Generic 时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36136443/

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