混合外部和常量

新手上路,请多包涵

我可以将 extern 和 const 混合为 extern const 吗?如果是, const 限定符是否仅在它声明的范围内强加它的统治,还是应该完全匹配它声明的翻译单元的声明?即我可以声明说 extern const int i; 即使实际 i 不是 const ,反之亦然?

原文由 legends2k 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 663
2 个回答
  • 是的,您可以一起使用它们。
  • 是的,它应该与实际声明的翻译单元中的声明完全匹配。当然,除非你参加了 Underhanded C Programming Contest :-)

通常的模式是:

  • 文件.h:

extern const int a_global_var; - 文件.c:

#include "file.h"

const int a_global_var = /* some const expression */;

编辑:合并legends2k 的评论。谢谢。

原文由 edgar.holleis 发布,翻译遵循 CC BY-SA 3.0 许可协议

你可以一起使用它们。但是您需要在使用 const 时保持一致,因为当 C++ 进行名称修饰时,const 包含在用于修饰符号名称的类型信息中。所以 extern const int i 将引用与 extern int i

除非你使用 extern “C” {}。 C名称修饰不注意const。

原文由 John Knoeller 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏