在 C 中定义全局常量

Moh*_*sam 2 c declaration extern stdint

如何在 C 中定义全局常量?我被告知要做这样的事情

在 header.h

const u32 g_my_const;
Run Code Online (Sandbox Code Playgroud)

在代码.c

#include "header.h"
const u32 g_my_const= 10U;
Run Code Online (Sandbox Code Playgroud)

但我收到一个编译错误:

错误:未初始化的 const 'g_my_const' [-fpermissive]

有人可以解释如何正确地做到这一点。

Vla*_*cow 6

在标题中使用

extern const u32 g_my_const;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,这只是常量的声明,而在 c 模块中会有它的定义。

#include "header.h"
const u32 g_my_const= 10U;
Run Code Online (Sandbox Code Playgroud)

正如@Thomas Jager在对您的问题的评论中已经提到的那样,您可以通过包含标题来使用类型的标准别名<stdint.h>

例如

#include <stdint.h>

extern const uint32_t g_my_const;
Run Code Online (Sandbox Code Playgroud)