指向全局 volatile 的静态常量指针
static const pointer to global volatile
如何声明一个指向全局 volatile 的静态常量指针?
到目前为止我有这个,但我不确定它是否正确:
// 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
上编译
该构造只是声明了指向非 const 对象的 const 指针。因此,您可以更改引用的对象,但不能更改指针本身。
#define flag_it_ptr flag_it_1
无需指针即可完成工作。我认为你把简单的事情复杂化了。
如何声明一个指向全局 volatile 的静态常量指针?
到目前为止我有这个,但我不确定它是否正确:
// 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
上编译该构造只是声明了指向非 const 对象的 const 指针。因此,您可以更改引用的对象,但不能更改指针本身。
#define flag_it_ptr flag_it_1
无需指针即可完成工作。我认为你把简单的事情复杂化了。