1

我在我的一个文件中定义了一个变量,它可能由文件本身中的代码操作,但它始终是任何外部文件的常量值。

我如何将变量声明为常量,而不会在为其定义的文件中分配此变量的值时引发错误,同时允许编译器对其进行优化,就像它在那些外部单元中是常量一样读取?

4

2 回答 2

4

不能修改右值。使用访问器函数来访问它保证你只提供一个右值,例如

static int value;

extern int getconst();

int getconst() {
  return value;
}

这使得:

getconst() = -1; // Compiler error

const或者,您可以通过指向a 的指针公开您的值const int

#include <stdio.h>

static int value = -1;

extern const int * const public_non_modifiable;
const int * const public_non_modifiable = &value;


int main() {
  printf("%d\n", *public_non_modifiable); // fine
  *public_non_modifiable = 0; // compiler error
  return 0;
}
于 2012-11-28T17:21:16.793 回答
1

在修改 virables 的文件中声明如下:

int e = 0, e_ant = 0, adj;

并以这种方式在其他文件中声明:

extern const int e, e_ant, adj;

为我工作。我正在使用带有 MPLAB 的 dsPIC。

第一个文件计算所有变量的值。第二个文件仅在 LCD 显示器中显示这些值,完全禁止写入这些变量。

于 2017-07-20T00:36:25.510 回答