我有两个文件,一个名为test.cpp,另一个名为ani.cpp。
test.cpp如下:
#include<iostream>
namespace Anirudh{
void start(){
std::cout<<"This is the start function of the namespace Anirudh\n";
}
}
文件 ani.cpp如下
#include<iostream>
using namespace Anirudh;
int main(){
start();
return 0;
}
这就是我在终端上做的事情
anirudh@anirudh-Aspire-5920:~/Desktop/testing$ g++ -c test.cpp
anirudh@anirudh-Aspire-5920:~/Desktop/testing$ g++ test.o ani.cpp
ani.cpp:3: error: ‘Anirudh’ is not a namespace-name
ani.cpp:3: error: expected namespace-name before ‘;’ token
ani.cpp: In function ‘int main()’:
ani.cpp:6: error: ‘start’ was not declared in this scope
anirudh@anirudh-Aspire-5920:~/Desktop/testing$
这是我第一次尝试在C ++中定义自己的命名空间并在另一个代码中使用它。我在我的#include "test.cpp"
文件中ani.cpp
之后运行了我的代码,但我想将test.cpp
的目标代码与ani.cpp
相关联,而不是将其包含在ani.cpp中
我甚至尝试了extern命名空间Anirudh;但那没用。当然有一种正确的方式来链接它们,我现在还不知道。所以请赐教。提前谢谢。
答案 0 :(得分:0)
在ani.cpp
内,您在执行namespace Anirudh
之前从未告诉编译器程序中的其他位置using
。如果你习惯了其他模块系统,这可能看起来很古怪。
你可以做的是在调用它之前声明命名空间+函数,在using namespace
中的ani.cpp
之前使用这些行
namespace Anirudh{
void start();
}
这些声明通常会包含在标题中,但这个简单示例可能不需要这样做。
答案 1 :(得分:0)
如何对函数进行原型设计:
namespace Anirudh {
void start();
} // namespace Anirudh
int main(...){
//...
答案 2 :(得分:0)
如果您没有头文件,那么您至少要做的是:在调用函数原型之前,在ani.cpp
中编写函数的原型,
using namespace Anirudh;
void Anirudh::start();
int main(){
start();
return 0;
}