我有一堆参数(整数和浮点数);我想编写一个C代码,其中主程序和函数都引用相同的参数,这样如果我改变其中一个,整个代码就知道我设置的新值。我的代码由一个调用function.c文件的main.c文件组成;现在我在main和函数中声明了参数,但我认为这不是很健壮(如果我在main中更改了一个参数,我忘了在函数中也改变它我得到错误的结果)。所以这里有一个问题:如何声明参数以便只更改一次而不是在我定义的任何地方更改它?
PS:一些参数依赖于先前声明的其他参数
这就是我做的:我创建了一个myparameters.h
文件,我在其中声明我的参数:extern float x;
然后我创建了一个myparamter.c
文件,我在其中定义了参数的值:float x = 10;
然而,我定义的一些参数取决于其他参数:float a = a + b
;因此我收到如下错误消息:
警告:初始化元素不是常量表达式
答案 0 :(得分:0)
您所谈论的是全局变量,而不是参数。 “参数”一词指的是函数的输入参数:
int my_function(int arg1, char arg2) {
这就是你应该如何将参数传递给函数,而不是通过全局变量。
您收到错误是因为您尝试使用在编译时未知的值初始化函数外部的全局变量:
int a = 2; /* legal */
int b = a + 2; /* not legal */
int main(){ /* the rest of your code */
Globals只能通过常量,宏和硬编码值进行初始化:
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 */