【问题标题】:Why UuidFromString function requests non-const pointer to unsigned char?为什么 UuidFromString 函数请求指向 unsigned char 的非常量指针?
【发布时间】:2016-04-06 05:56:28
【问题描述】:

我不知道为什么 UuidFromString 函数需要 non-const 指向 unsigned 字符的指针。为什么不改为const char*

我认为没有必要修改第一个参数所指出的数据。

【问题讨论】:

  • 也许禁止传递字符串文字?
  • @vsoftco:为什么会有问题?
  • @MatteoItalia 坦率地说,我不知道这个函数是做什么的,只是一个疯狂的猜测。但它不应该返回指向临时对象的指针(我认为它可能只是以某种方式返回传递的指针)。
  • @vsoftco:它只是一个解析 UUID 的字符串表示并将解析后的值写入 UUID 结构的函数,如果无法执行转换,则返回状态码以发出信号。我真的想不出为什么它需要一个非常量缓冲区来输入,可能是疏忽。
  • 我不确定,但我认为这是一个相当古老的功能。 const 当时可能没有得到很好的支持。许多较旧的 Windows API 函数不使用它。

标签: c++ winapi constants


【解决方案1】:

UuidFromString 专为 COM/DCOM 设计。

unsigned char 是为了防止需要检查负的char 值(默认的charsigned,这意味着值的范围是 [-128, 127] - 因为这个字符串应该是 ANSI字符,这是一种避免 < 0 条件检查的廉价方法。

它的姊妹函数 (UuidToString) 确实采用 const 输入参数。我在文档中没有看到为什么 UuidFromString 没有这样的原因,但这很可能是一个从未解决过的疏忽。

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2017-06-12
    • 2021-04-17
    • 1970-01-01
    • 2017-02-19
    相关资源
    最近更新 更多