如何在asynccallbacks.c和action.c之间共享变量

时间:2019-02-15 03:38:20

标签: c loadrunner

我的脚本有一个异步对话,该对话在用户执行其他任务时轮询队列以查找新消息。我已经将web_reg_async_attributes()放入init中,我的回调位于asynccallbacks.c中,而我的主要逻辑正在起作用。 异步每5秒轮询一次,检查消息队列。当出现消息时,我希望回调函数设置一个action.c可以访问的标志,以便它可以有条件地执行逻辑。我尝试使用在init中声明的全局变量,但在asynccallbacks.c中不可见。

有没有办法做到这一点? (我不想使用文件,因为我测量的活动少于一秒钟,如果将文件系统放入图片中,我的响应时间将不具有代表性。)

1 个答案:

答案 0 :(得分:1)

在第一个文件(asynccallbacks.h)中:

// Explicit definition, this actually allocates
// as well as describing
int Global_Variable;

// Function prototype (declaration), assumes 
// defined elsewhere, normally from include file.       
void SomeFunction(void);        

int main(void) {
    Global_Variable = 1;
    SomeFunction();
    return 0;
}

在第二个文件(action.c)中:

// Implicit declaration, this only describes and
// assumes allocated elsewhere, normally from include
extern int Global_Variable;  

// Function header (definition)
void SomeFunction(void) {       
    ++Global_Variable;
}

在此示例中,变量Global_Variable在asynccallbacks.h中定义。为了在action.h中使用相同的变量,必须对其进行声明。不管文件有多少,全局变量只定义一次。但是,必须在包含该定义的文件之外的任何文件中声明它。