gpt4 book ai didi

perl - Perl API 类型的 printf 格式说明符

转载 作者:行者123 更新时间:2023-12-05 01:26:18 25 4
gpt4 key购买 nike

是否有提供正确 printf 的宏IV 的格式说明符, UV , STRLEN , Size_tSSize_t ? perlapi 中没有列出.


C 为 stdint.h 提供的类型的格式说明符提供宏,如 uint32_t .

#include <inttypes.h>
#include <stdint.h>

uint32_t i = ...;
printf("i = %" PRIu32 "\n", i);

有没有类似 PRIu32 的东西对于 IV , UV , STRLEN , Size_tSSize_t ?


larger problem是我试图建议修复在 Windows Subsystem for Linux 上的 Ubuntu 上安装 Sort::Key 时产生的以下编译警告:

Key.xs: In function ‘_keysort’:
Key.xs:237:12: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘IV {aka long int}’ [-Wformat=]
croak("unsupported sort type %d", type);
^~~~~~~~~~~~~~~~~~~~~~~~~~
Key.xs: In function ‘_multikeysort’:
Key.xs:547:9: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘STRLEN {aka long unsigned int}’ [-Wformat=]
croak("wrong number of results returned "
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Key.xs:547:9: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘IV {aka long int}’ [-Wformat=]

最佳答案

  • 对于UV,存在以下宏:

    • UVuf(十进制)
    • UVof(八进制)
    • UVxf(lc 十六进制)
    • UVXf(uc 十六进制)
  • 对于IV,存在如下宏:

    • IVdf(十进制)
  • 对于NV,存在以下宏:

    • NVef ("%e-ish")
    • NVff ("%f-ish")
    • NVgf ("%g-ish")
  • 对于 Size_tSTRLEN,使用内置的 z 长度修饰符。[1]

    • %zu(十进制)
    • %zo(八进制)
    • %zx(lc 十六进制)
    • %zX(uc 十六进制)
  • 对于 SSize_t,使用内置的 z 长度修饰符。[1]

    • %zd(十进制)

例如,

IV iv      = ...;
STRLEN len = ...;

croak("iv=%" IVdf " len=%zu", iv, len);

  1. 虽然 Size_tSSize_t 是可配置的,但实际上它们与 size_tssize_t 并没有什么不同, STRLENSize_t 的 typedef。

关于perl - Perl API 类型的 printf 格式说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60107464/

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