在一个文件中将变量声明为静态并在另一个文件中执行extern声明 - 我认为这会在链接时出错,因为在任何对象中都不会看到extern变量,因为在其他文件中声明的变量是静态的.但不知何故,链接器(瑞萨)没有显示任何错误并创建了可执行文件.
如果上面的用例是正确的,如果2个变量在2个不同的文件中声明为静态而另一个在另一个带extern声明的文件中会发生什么?在这种情况下,将在2个不同的对象中创建2个不同的存储器,但是哪个变量将被链接用于其他变量,在另一个文件中被声明为extern(因为两个变量名都相同)?
在file1.c
static int test_var;
fn1()
{
test_var = 1;
}
Run Code Online (Sandbox Code Playgroud)
file2.c中
static int test_var;
fn2()
{
test_var = 2;
}
Run Code Online (Sandbox Code Playgroud)
file3.c中
extern int test_var;
fn3()
{
int x;
x = test_var;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2376 次 |
| 最近记录: |