在一个文件中声明一个变量为静态并在另一个文件中做一个extern声明 - 我认为这会在链接时给出错误extern变量不会在任何对象中看到,因为在其他文件中声明的那个变量是静态的。但不知何故链接器(瑞萨)没有显示任何错误并创建了可执行文件。同名两个静态变量(两个不同的文件)和extern其中一个在任何其他文件
如果上面的用例是正确的,如果2个变量在2个不同的文件中被声明为静态,另一个在另一个文件中用extern声明,会发生什么?在这种情况下,将在2个不同的对象中创建2个不同的内存,但其中一个变量将被链接到其他变量在另一个文件中声明为extern(因为两个变量名都相同)??
file1.c中
static int test_var;
fn1()
{
test_var = 1;
}
file2.c中
static int test_var;
fn2()
{
test_var = 2;
}
file3.c中
extern int test_var;
fn3()
{
int x;
x = test_var;
}
因此显示实际的代码。 – 2013-12-15 14:08:05
@ H2CO3,样本代码已更新... – Opener
'test_var'没有定义声明'extern',并且没有'main'的定义。我的链接器标记了两个错误。请显示_complete_示例。 –