如何在 C 中声明参数(相互依赖)

How to declare parameters (which depend on one another ) in C

我有一堆参数(整数和浮点数);我想编写一个 C 代码,其中主程序和函数都引用相同的参数,这样如果我更改其中一个参数,整个代码就会知道我设置的新值。我的代码由调用 function.c 文件的 main.c 文件组成;现在我在 main 和函数中都声明了参数,但我认为这并不可靠(如果我在 main 中更改了一个参数而我忘记在函数中也更改它,我会得到错误的结果)。所以这里的问题是:如何声明参数以便只更改一次而不是在我定义的所有地方都更改它?

PS: 一些参数依赖于之前声明的一些参数

这是我所做的:我创建了一个 myparameters.h 文件,我在其中声明了我的参数,如下所示:extern float x; 然后我创建了一个 myparamter.c 文件,我在其中定义了参数的值:float x = 10;

但是我定义的一些参数依赖于其他参数:float a = a + b;因此我收到了这样一条错误消息:

warning: initializer element is not a constant expression

术语说明

你说的是全局变量,而不是参数。单词 "parameters" 指的是函数的输入参数:

int my_function(int arg1, char arg2) {

这就是您向函数传递参数的方式,而不是通过全局变量。

你的错误

您收到错误是因为您试图在函数外部初始化一个全局变量,其值在编译时不一定已知:

int a = 2;     /* legal */
int b = a + 2; /* not legal */

int main(){ /* the rest of your code */

全局变量只能由常量、宏和硬编码值初始化:

int a = 2; /* legal */
int b;     /* also legal */

int main(){
    b = a + 2; /* now that you're in a function, you can make your assignment */