gpt4 book ai didi

c++ - 将 API 函数参数从 'char *' 更改为 'const char *' 有哪些潜在问题?

转载 作者:搜寻专家 更新时间:2023-10-31 00:53:36 25 4
gpt4 key购买 nike

如果我有这样的 API 函数声明:

void fn(char * s);

我在以后的修订中将其更改为:

void fn(const char * s);

这会破坏二进制兼容性吗?这会破坏以前有效的东西吗?此类更改是否存在任何问题?

请注意,该参数始终被视为常量,即使在第一次修订中也是如此。

最佳答案

如果该函数被声明为 extern "C",则可能无关紧要,否则可能会有影响。

对于 C++ 函数,参数类型是签名的一部分,因此对于采用 const char * 的函数,经过修饰的名称会有所不同和一个需要一个简单的 char * .并且由于该名称解析将在不重建代码的情况下失败。

但是,C 不对参数类型进行编码,因此无论哪种方式,名称都是相同的。

两种情况下的实际代码可能是相同的,事实上它是 char *const char * 相比,不会改变元素的访问方式.

关于c++ - 将 API 函数参数从 'char *' 更改为 'const char *' 有哪些潜在问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48158021/

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