我在用C语言编写程序,想把全局参数变量设置成一个文件,多个文件共用这些全局变量,如何做到?谢谢!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我在用C语言编写程序,想把全局参数变量设置成一个文件,多个文件共用这些全局变量,如何做到?谢谢!相关的知识,希望对你有一定的参考价值。

楼上说的对。你用其它软件也是一样的设置。.h与.c,你只要include进去,就可以正常使用。
例如在IAR中
定义一个.h文件
#ifndef __IODEF_H
#define __IODEF_H
//中间填写你要定义的全局变量
endif

然后即可在.c文件中把这个文件include进来。
参考技术A //var.h
extern int var ;

//var.c
#include"var.h"
int var = 10;

//otherA.c
#include"var.h"

//otherB.c
#include"var.h"

//otherC.c
#include"var.h"本回答被提问者采纳
参考技术B a.c
int abc = 0;

b.c
extern int abc;

c.c
extern int abc;

将默认参数定义为全局变量

【中文标题】将默认参数定义为全局变量【英文标题】:Defining a default argument as a global variable 【发布时间】:2017-07-31 19:50:45 【问题描述】:

假设我有一个 Python 函数 foo,它接受一个默认参数,其中该默认值设置为某个全局变量。如果我现在在调用函数之前更改该全局变量,默认参数仍设置为该全局变量的原始值。

例如:

x = 1

def foo(a=x):
    print a

x = 2
foo()

这将打印1,而不是2

我应该如何编写我的代码,以便我可以更改这个全局变量,并让它更新这个默认参数?

【问题讨论】:

默认参数只计算一次... 【参考方案1】:

默认变量只评估和设置一次。因此 Python 制作了 引用的副本,从那时起,它总是将该引用作为默认值传递。没有进行重新评估。

但是,您可以通过使用 另一个对象 作为默认对象来解决此问题,然后使用 if 语句相应地替换它。比如:

the_default = object()
x = 1

def foo(a = the_default):
    if a is the_default:
        a = x
    print a

x = 2
foo()

请注意,我们使用is 来执行引用相等。所以我们检查它是否确实是default_object。您不应该在代码的其他地方使用 the_default 对象。

在许多 Python 代码中,它们使用 None 作为默认值(从而减少了构造对象的数量)。例如:

def foo(a = None):
    if a is None:
        a = x
    print a

但是请注意,如果您这样做,您的程序将无法区分调用foo()foo(None) 的用户,而使用the_object 会使用户更难获得对该对象的引用。如果None 也是一个有效的候选者,这将很有用:如果您希望foo(None) 打印'None' 而不是x

【讨论】:

as the_deault 你可以只使用'None',除非 None 是参数的有效值 @CarloLobrano:是的。我在您撰写该评论的同时更新了答案。唯一的问题可能是您想要排除用户自己可以提供该对象的事实。通过使用 the_object 之类的东西,您可以更好地防止这种行为。 没错。有时使用“默认对象”比使用“无”更明智

以上是关于我在用C语言编写程序,想把全局参数变量设置成一个文件,多个文件共用这些全局变量,如何做到?谢谢!的主要内容,如果未能解决你的问题,请参考以下文章

C适当使用全局变量[关闭]

jmeter的全局变量和csv参数化关联的操作

C语言返回多个值的方法

C语言中,宏替换与定义全局变量的区别是啥?

C语言函数怎么像python那样返回多个值?(三种方法:1设置全局变量 2传递指针 3使用结构体返回不同类型的数据)

C语言基础:作用域规则(局部变量,全局变量,形式参数)全局变量与局部变量在内存中的区别初始化局部变量和全局变量