【发布时间】:2019-07-26 14:13:36
【问题描述】:
如何在 C 中定义全局常量? 我被告知要做这样的事情
在 header.h 中
const u32 g_my_const;
在code.c中
#include "header.h"
const u32 g_my_const= 10U;
但是我得到一个编译错误:
错误:未初始化的 const 'g_my_const' [-fpermissive]
谁能解释一下如何正确地做到这一点。
【问题讨论】:
-
不要在
h文件中定义变量(甚至const)。extern他们在那里。经验法则 - 如果它在内存中创建一个对象 - 它不应该在标题中。 -
另外说明,除非您坚持支持没有它的实现的代码,否则您应该使用来自
<stdint.h>的固定大小整数类型,而不是自定义整数类型。 (除非,像我一样,你被困在维护那些太顽固而无法使用它的人编写的代码,并且他们决定为它编写自己的标头。) -
感谢您的信息,是的,我坚持使用必须保留的遗留架构,我在这里没有太多创新空间 :)
标签: c constants declaration extern stdint