指向全局易失性的静态const指针

时间:2019-01-17 10:58:15

标签: c pointers static const-pointer

如何声明一个指向全局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上编译的

1 个答案:

答案 0 :(得分:1)

该构造只是声明了指向非const对象的const指针。因此,您可以更改引用的对象,但不能更改指针本身。

 #define flag_it_ptr flag_it_1 

将完成没有指针的工作。我认为您过于简单了。