跨PROGRAM调用内表全局变量

例如 (SAPLIWOL)WRIWOL 此全局变量在其他PROGRAM里的调用

代码:

FIELD-SYMBOLS <fs_riwol> TYPE ANY TABLE. "定义指针类型为TABLE

ASSIGN  ('(SAPLIWOL)WRIWOL[]') TO <fs_riwol> "将内表分配给指针

此时<fs_riwol>内就存有内表全局变量wriwol了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我来回答你的问题。首先,我们先来看一下程序的代码,然后再结合编译信息和运行结果来说明上述不同存储类别的特性与区别。 我们可以将程序分为多个源文件,比如我们可以创建一个名为main.c的文件,它包含main()函数和全局变量;再创建一个名为functions.c的文件,它包含一些函数;最后创建一个名为variables.c的文件,它包含局部变量、局部静态变量全局静态变量。 下面是程序的代码: **main.c** ```c #include <stdio.h> int global_var = 10; static int static_global_var = 20; extern int function(); int main() { printf("global_var: %d\n", global_var); printf("static_global_var: %d\n", static_global_var); function(); return 0; } ``` **functions.c** ```c #include <stdio.h> extern int global_var; static int static_local_var = 30; void function() { int local_var = 40; static int static_local_var = 50; printf("global_var in function: %d\n", global_var); printf("local_var: %d\n", local_var); printf("static_local_var: %d\n", static_local_var); } ``` **variables.c** ```c #include <stdio.h> int global_var = 100; static int static_global_var = 200; int main() { printf("global_var: %d\n", global_var); printf("static_global_var: %d\n", static_global_var); function(); return 0; } ``` 在这个程序中,我们使用了不同的存储类别来定义变量和函数。下面我们来分析一下编译的结果: ``` $ gcc -o program main.c functions.c variables.c main.c:4:12: warning: implicit declaration of function 'function' is invalid in C99 [-Wimplicit-function-declaration] function(); ^ 1 warning generated. ``` 编译时出现了一个警告,这是因为在main.c中使用了函数function(),但是在该文件中没有声明该函数。所以我们使用了extern关键字来声明该函数。 编译完成后,我们可以运行程序,得到如下结果: ``` global_var: 10 static_global_var: 20 global_var in function: 10 local_var: 40 static_local_var: 50 ``` 从运行结果中,我们可以看出: - 全局变量global_var和全局静态变量static_global_var的作用域是整个程序,它们可以被任何函数访问。在main.c和variables.c中,我们分别定义了它们的初始值为10和20,但是在variables.c中,我们又重新定义了它们的初始值为100和200。在程序运行时,输出的结果为10和20,这是因为在main()函数中,我们调用全局变量全局静态变量的初始值,而不是在variables.c中重新定义的初始值。 - 局部变量local_var和局部静态变量static_local_var的作用域是定义它们的函数内部,它们只能被该函数内部访问。在function()函数中,我们定义了局部变量local_var和局部静态变量static_local_var的值分别为40和50。当我们调用function()函数时,输出的结果为global_var in function: 10、local_var: 40和static_local_var: 50。 - 全局静态变量static_global_var和局部静态变量static_local_var的生存期是整个程序,它们在程序开始运行时分别被初始化为20和30,当程序结束时才被销毁。在function()函数中,我们又定义了一个名字相同的静态局部变量static_local_var,并将其初始化为50。当我们调用function()函数时,输出的结果为static_local_var: 50,这是因为静态局部变量的作用域只在定义它的函数内部,所以它不会覆盖全局变量全局静态变量。 综上所述,不同的存储类别具有不同的特性和区别。全局变量全局静态变量的作用域是整个程序,而局部变量和局部静态变量的作用域是定义它们的函数内部。全局静态变量和局部静态变量的生存期是整个程序,而局部变量的生存期是定义它们的函数的执行期间。静态局部变量全局变量全局静态变量的区别在于作用域只在定义它的函数内部,不会对全局变量全局静态变量造成影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值