在任何其他函数中使用全局变量的值,因为其值在另一个函数内更改

时间:2013-09-04 10:23:46

标签: c function global-variables

说我在一个函数中使用全局变量来保存信号的值(在电路板感应的原理图中)

void randomfunction()
{
    for(t=lnnew,s=node->name;*s;)
    {
    if()
         //some code

    else
      *t=*s;
    t++;
    s++;
    }
printf("%s \n",lnnew);   //so now here lnnew is holding new values of signal and when i print this, every time new value of signal is printed and i have declared it as global
}

现在我如何在任何其他函数writelnnewvalue()中使用此全局变量,以便当randomfunction()中lnnew的值发生变化时,它还会得到更改并打印在writelnnewvalue ()函数中?

我在this link中提出了类似的问题,如果它看起来是精确的副本,则将其标记为重复。

2 个答案:

答案 0 :(得分:0)

您需要在包含在使用它的所有编译单元中的标头(.h文件)中声明您的变量:

extern volatile int lnnew;

有一个编译单元(.c文件)实际定义它

volatile int lnnew;

然后它将在包含标题的任何地方使用。 volatile这里向编译器指示该变量受到不可预测的更改,并且不会被缓存。

答案 1 :(得分:-1)

您可以使用两个不同的线程来执行这些任务。使用一个标志,该标志在一个线程(将运行lnnew)&的randomfunction()更改时更新。使用以此标志为条件的其他线程(将运行writelnnewvalue())来打印所需的内容。

您可以在Internet上找到有关多线程编程的更多信息。我找到了一些链接:
Link 1
Link 2

链接1包含代码示例和说明。