gpt4 book ai didi

C:在没有 gcc 警告的情况下找出 typedef 的 % 格式说明符?

转载 作者:行者123 更新时间:2023-12-02 16:08:52 25 4
gpt4 key购买 nike

我在 C 中尝试使用 typedef 变量时遇到的一个问题是弄清楚已经 typedef 的实际原始类型是什么,所以我尝试使用 printf 打印其值时,可以使用适当的 % 说明符。大多数时候我必须引用 gcc 产生的警告。例如,当使用 stat 系统调用时,返回的结构有很多具有不同 typedef 类型的成员,例如 dev_t ino_tmode_t 等,我通常不得不猜测格式说明符可能是什么,然后编译器会警告我,我会更正它:

stat_demo.c: In function ‘main’:
stat_demo.c:46:45: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘__blksize_t’ {aka ‘long int’} [-Wformat=]
46 | printf("block size for file system IO: %d\n", s->st_blksize);
| ~^ ~~~~~~~~~~~~~
| | |
| int __blksize_t {aka long int}
| %ld

这是大多数人在打印时使用 typedef 的方式吗?这不是违背了要点吗,因为您需要知道 typedef 的实际原语是什么?有没有更好的方法来完全抽象实际类型?

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