我有一堆参数(整数和浮点数);我想编写一个C代码,其中主程序和函数都引用相同的参数,这样如果我改变其中一个,整个代码就知道我设置的新值。我的代码由一个调用function.c文件的main.c文件组成;现在我在main和函数中声明了参数,但我认为这不是很健壮(如果我在main中更改了一个参数,我忘了在函数中也改变它我得到错误的结果)。所以这里有一个问题:如何声明参数以便只更改一次而不是在我定义的任何地方更改它?
PS:我不想使用#define
,因为它不允许我指定它是否为整数。
答案 0 :(得分:0)
您可以使用全局变量,在main.c文件的顶部定义它,并使用声明“extern”将其引用到另一个.c文件的顶部。 main.c中 @包括 ... int a; //全局变量
function.c
extern int a; //全局变量
答案 1 :(得分:0)
您可以使用全局变量。
创建.h文件 - 让我们称之为globals.h
。将全局变量的声明放在文件中。
extern int var1;
extern float var2;
extern double var3;
创建一个.c文件 - 让我们称之为globals.c
。在文件中定义变量。
#include "globals.h"
int var1 = 0;
float var2 = 10.0f;
double var3 = 200.0;
在要访问全局变量的任何.c文件中使用#include "globals.h"
。
#include "globals.h"
int main()
{
printf("var1 : %d\n", var1);
printf("var2 : %f\n", var2);
printf("var3 : %lf\n", var3);
}
如果您在程序中的任何位置更改var1
,var2
或var3
的值,则更改将对访问它们的所有功能生效。
答案 2 :(得分:0)
您可以使用静态效果,所有意图和目的都可以实现效果。
myext.h:
#ifndef _MYEXT_H
#define _MYEXT_H
static const int myx = 245;
static const unsigned long int myy = 45678;
static const double myz = 3.14;
#endif
myfunc.h:
#ifndef MYFUNC_H
#define MYFUNC_H
void myfunc(void);
#endif
myfunc.c:
#include "myext.h"
#include "myfunc.h"
#include <stdio.h>
void myfunc(void)
{
printf("%d\t%lu\t%f\n", myx, myy, myz);
}
myext.c:
#include "myext.h"
#include "myfunc.h"
#include <stdio.h>
int main()
{
printf("%d\t%lu\t%f\n", myx, myy, myz);
myfunc();
return 0;
}