You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

__const与__const__扩展关键字的区别及共存原因

GCC/Clang中__const__const__的区别及共存原因
  • 功能上完全无区别:这两个扩展关键字都是C99标准const的替代拼写,在所有C、C++语言模式下,实现的语义和const完全一致——不管是用来声明只读变量、限定函数参数不可修改,还是标记返回值为只读,二者的表现没有任何差异。

  • 同时被支持的原因是历史兼容性

    • 早期编译器扩展遗留:在C99正式把const纳入标准之前,部分编译器就已经用__const作为非标准扩展来实现只读变量的功能,很多老项目的代码里已经广泛使用了这个写法。
    • 符合标准命名规范:后来为了贴合C标准中“以下划线开头且紧跟下划线或大写字母的标识符归实现方保留使用”的规则,编译器新增了__const__这种双下划线包裹的形式,避免和用户自定义的标识符产生命名冲突。
    • 兼容新老代码:为了不让依赖__const的旧代码直接编译失败,同时让新代码可以使用更规范的__const__,编译器就同时保留了这两种写法,确保所有历史代码和新编写的代码都能正常编译。

实际开发中,你完全可以互换使用这两个关键字,不会对代码逻辑产生任何影响。

内容的提问来源于stack exchange,提问作者user31571297

火山引擎 最新活动