gpt4 book ai didi

c - 如何确定变量的类型?

转载 作者:行者123 更新时间:2023-11-30 20:00:03 24 4
gpt4 key购买 nike

我的想法是以某种方式使用 if运算符(operator)多次并检查每种类型:

if (the variable has type int){
return 0;
}
if (the variable has type double){
return 1;
}
...

最佳答案

您的问题在 C11 中没有多大意义(请仔细阅读 n1570 了解详细信息):给定变量(或值)的类型在编译时已知并且在运行时被遗忘,因为您声明具有某种显式类型的(全局、静态或自动)变量。另请注意 calling conventionsABI定义如何以不同的方式处理不同类型的数据(例如,传入各种不同的 processor registers 或在 call stack 上)。

同样,函数具有固定且定义良好的签名(您应该在声明函数时给出它,例如在某些头文件中)。

如果您将某些数据的地址作为void*形式参数(或某些数据作为可变参数)传递,则需要一些约定> 获取其类型(通常,您将传递另一个描述该类型的形式参数; printfscanf 是一个典型的示例)。对于可变参数函数,请考虑 stdarg.h设施。

也许你想考虑generic selection在宏中使用 _Generic。这是我很少使用的功能。

也许您想自定义您的GCC编译器通过一些GCC plugin 。这可能需要数月的时间(并且取决于您的 GCC 的特定版本)。

也许你想要一些tagged union或总和类型。您通常会实现 abstract data type包含一个包含枚举器(选择类型)和一个unionstruct。如需灵感,请查看 Glib's GVariant ,并且,因为 Glib 是 free software ,研究一下它的源码。

也许您可能想查看 libffi .

如果您(具体)使用 GCC ,考虑其中的一些 C language extensions (C11 标准之外)。您可能需要typeof或一些builtins就像__builtin_types_兼容_p

最后,您可能会生成一些 C 文件,也许使用您的脚本、另一个预处理器(如 GPP 或 m4 等)...

您应该详细描述您的实际问题。在最初的形式中,您的问题通常是一些 XY problem .

关于c - 如何确定变量的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48724484/

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