如何在C中声明参数

时间:2015-02-17 16:57:44

标签: c variables parameters

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

PS:我不想使用#define,因为它不允许我指定它是否为整数。

3 个答案:

答案 0 :(得分:0)

您可以使用全局变量,在main.c文件的顶部定义它,并使用声明“extern”将其引用到另一个.c文件的顶部。 main.c中 @包括  ... int a; //全局变量

function.c

包括......

extern int a; //全局变量

答案 1 :(得分:0)

您可以使用全局变量。

  1. 创建.h文件 - 让我们称之为globals.h。将全局变量的声明放在文件中。

    extern int var1;
    extern float var2;
    extern double var3;
    
  2. 创建一个.c文件 - 让我们称之为globals.c。在文件中定义变量。

    #include "globals.h"
    
    int var1 = 0;
    float var2 = 10.0f;
    double var3 = 200.0;
    
  3. 在要访问全局变量的任何.c文件中使用#include "globals.h"

    #include "globals.h"
    
    int main()
    {
        printf("var1 : %d\n", var1);
        printf("var2 : %f\n", var2);
        printf("var3 : %lf\n", var3);
    }
    
  4. 如果您在程序中的任何位置更改var1var2var3的值,则更改将对访问它们的所有功能生效。

答案 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;
}