main.c和fun.c代码如下,分别编译生成main.obj和fun.obj //main.c int fun(int); int x[2] = {1,2}; int g = 2; static void inner(); int main() { static int r; r = 5; g = fun(r); inner(); } static void inner() {} //fun.c extern int g; int fun(int a) { return g += a; } main.obj和fun.obj中的全局符号,外部符号,本地符号是什么
时间: 2024-04-08 21:36:25 浏览: 84
(完整版)C语言期末考试题必考(含答案).pdf
5星 · 资源好评率100%
在编译生成的 `main.obj` 和 `fun.obj` 文件中,会存在全局符号、外部符号和本地符号。
- 全局符号(Global Symbols)是在整个程序中可见的符号,可以被其他文件引用。在这段代码中,`x`、`g`、`fun`、`main` 都是全局符号。它们在各自的文件中定义并可以被其他文件引用。
- 外部符号(External Symbols)是在当前文件中引用但在其他文件中定义的符号。在这段代码中,`g` 在 `fun.c` 文件中定义,而在 `main.c` 文件中被引用。因此,`g` 在 `main.obj` 中是外部符号。
- 本地符号(Local Symbols)是在当前文件中定义且只在当前文件中可见的符号。在这段代码中,`r` 和 `inner` 都是本地符号,它们只在 `main.c` 文件内可见。
总结:
- `x`、`g`、`fun`、`main` 是全局符号,它们在各自的文件中定义并可以被其他文件引用。
- `g` 是外部符号,因为它在 `fun.c` 文件中定义但在 `main.c` 文件中被引用。
- `r` 和 `inner` 是本地符号,它们只在 `main.c` 文件内可见。
阅读全文