【发布时间】:2011-10-07 04:42:51
【问题描述】:
// x.h
int i = 3;
// x1.cpp
#include"x.h"
//...
// x2.cpp
#include"x.h"
//...
以上代码将给出链接器错误。但是,如果我声明,
//x.h
static int i = 3;
它不会在 gcc 中给出链接器错误,即使我们有相同的#include!我们是否为每个.cpp 文件创建不同的static int i;?它会导致任何静默链接错误(由于相同的名称)吗?
【问题讨论】:
-
@John,我正在编译 .cpp。让它也适用于 C++,因为它适用于 C 和 C++。
-
你不能同时拥有它。它要么是 C++ 代码,要么是 C 代码。只选一个。如果您将代码编译为 C++,那么这不是 C 问题。
-
我真诚地希望你为演示目的编写这个示例,名称像 i 的全局变量是通往(调试)地狱之路的东西......
-
@fvu 我想我们可以假设真正的文件名也不是 x.h。
标签: c++ linker static-variables