我有一个名为test.cc
的文件
#include <stdio.h>
int doit(){
return 4;
}
namespace abc {
int returnIt(int a){
return a;
}
}
我可以使用doit(),但是如何在不使用.h文件的情况下在main.cc
中的命名空间中使用此函数:
using namespace abc;
int doit();
int main(int argc, const char * argv[]) {
cout<<returnIt(3)<<endl; // print 3
cout<<doit(); // print 4
return 0;
}
答案 0 :(得分:1)
您可以通过先声明函数来调用它们。示例:
namespace abc {
int returnIt(int a); // function declaration
}
int main() {
abc::returnIt(3); // the declared function can now be called
请注意,声明必须与程序中其他地方使用的声明完全相同。为了在翻译单元之间实现相同的声明,通常将声明放入一个单独的文件(称为标头)中,并在需要该声明时使用预处理器将该文件包括在内。
答案 1 :(得分:-1)
您所需要的只是简单地在main函数之前编写函数。这样,编译器在主程序遇到函数原型之前就已经对其进行了处理,并且可以验证函数调用。
int doit()
{
return 4;
}
int returnIt(int a)
{
return a;
}
int main(int argc, const char * argv[])
{
cout<<returnIt(3)<<endl; // print 3
cout<<doit(); // print 4
return 0;
}
通常,避免使用using namespace;
。由于不正确的变量/函数用法,它使代码可能被破坏或变得可读性较差。那是因为太多的符号可以占据相同的(全局)范围。
如user4581301所指出,如果需要使用另一个库,则使用eerorika answer/method可能会更简单。