【发布时间】:2015-03-05 18:18:50
【问题描述】:
我不确定我的描述是否恰当地描述了该问题。当我尝试了解外部链接和内部链接时,我发现了这一点。假设我有一个包含 2 个文件的项目:
//A.cpp
#include <iostream>
void doSomething();
int main()
{
doSomething();
return 0;
}
//B.cpp
#include <iostream>
void doSomething()
{
std::cout << "Doing it" << std::endl;
std::cin.get();
}
请注意,这两个文件都不是标题。他们只提供 2 个翻译单元。
我惊讶地发现它可以编译并正常工作。当我在不同的文件中具有相同的效用函数(如线性插值)时,我习惯于编写这样的代码以避免多定义错误:
//A.cpp
#include <iostream>
static void doSomething()
{
std::cout << "Doing it" << std::endl;
std::cin.get();
}
int main()
{
doSomething();
return 0;
}
//B.cpp
#include <iostream>
static void doSomething()
{
std::cout << "Doing it" << std::endl;
std::cin.get();
}
/* some other functions that call doSomething() */
这显然是多余的,上面的方法似乎可以解决它。 但我想知道这真的是一种公认的风格吗?如果没有 IDE 的帮助,甚至找不到函数的定义。
【问题讨论】:
标签: c++ static extern linkage function-prototypes