如何声明一个指向全局volatile的静态const指针?
到目前为止,我已经知道了,但是我不确定它是正确的:
// a.c
volatile bool flag_it_1;
volatile bool flag_it_2;
// a.h
extern volatile bool flag_it_1;
extern volatile bool flag_it_2;
// b.c
#include "a.h"
static volatile bool *const flag_it_ptr = &flag_it_1;
编辑: 我这样使用它:
if (*flag_it_ptr) {
// work
*flag_it_ptr = false;
}
对于那些想知道为什么我使用该指针的人: 我可能会从编译到编译更改我正在使用的变量,并且不想在整个文件中更改名称,因此我只更改了一次。或多或少像宏或const全局变量。
这正确吗?
编辑: 它是在gcc上编译的
答案 0 :(得分:1)
该构造只是声明了指向非const对象的const指针。因此,您可以更改引用的对象,但不能更改指针本身。
#define flag_it_ptr flag_it_1
将完成没有指针的工作。我认为您过于简单了。