可以将C数据类型存储在变量中吗?

可以将C数据类型存储在变量中吗?,第1张

概述可以将C数据类型存储在变量中吗? 这样的东西 void* type = (byte*); 这里是一个场景,我写了一个测试用例,并尝试使用某些数据类型在printf中打印一个字节数组,具体取决于给定的参数: void print_byteArray(const void* expected, size_t size, bool asChars, bool asWCharT) { 可以将C数据类型存储在变量中吗?

这样的东西

voID* type = (byte*);

这里是一个场景,我写了一个测试用例,并尝试使用某些数据类型在printf中打印一个字节数组,具体取决于给定的参数:

voID print_byteArray(const voID* expected,size_t size,bool asChars,bool asWCharT) {    int iterations;    char* format;    if (asChars) {        iterations = (size / (sizeof (char)));        format = "%c";    } else if (asWCharT) {        iterations = (size / (sizeof (wchar_t)));        format = "%lc";    } else {        iterations = (size / (sizeof (byte)));        format = "%x";    }    int i;    for (i = 0; i < iterations; i++) {        if (asChars) {            printf(format,((char*) expected)[i]);        } else if (asWCharT) {            printf(format,((wchar_t*) expected)[i]);        } else {            printf(format,((byte*) expected)[i]);        }    }    fflush(stdout);}

这看起来效率低下.我想象一下,可以将循环体的尺寸缩小到一行:

printf(format,((type) expected)[i]);
@H_419_14@解决方法 不,没有这样的类型可以存储在标准C.

gcc提供了一种可能有用的扩展名.使用这个关键字的语法看起来像sizeof,但是构造方式就像一个用typedef定义的类型名称.详见here.

一些使用typeof的例子:

这表示y与x指向的类型.

typeof (*x) y;

这将y声明为这样的值的数组.

typeof (*x) y[4];

这将y声明为指向字符的指针数组:

typeof (typeof (char *)[4]) y;

它相当于以下传统的C声明:

char *y[4];

要使用typeof来查看声明的含义,为什么它可能是一个有用的方式来写,用这些宏重写:

#define pointer(T)  typeof(T *)#define array(T,N) typeof(T [N])

现在声明可以这样重写:

array (pointer (char),4) y;

因此,array(pointer(char),4)是指向char的4个指针的数组类型.

@H_419_14@ @H_419_14@ 总结

以上是内存溢出为你收集整理的可以将C数据类型存储在变量中吗?全部内容,希望文章能够帮你解决可以将C数据类型存储在变量中吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1252420.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存