因此,我目前正在为正在进行的较大项目制作一个小型原型,而我已经完全陷入其中。我对C ++相当陌生,并且从未使用过标头或名称空间。问题是,当我尝试使用创建的名称空间时,它会完全失败,并且编译器(clang)返回未定义。
#include <iostream>
#include "bark.hpp"
using namespace bark;
int main() {
bark::woof();
}
头文件:
#pragma once
#ifndef FUNCTIONS_HPP
#define FUNCTIONS_HPP
namespace bark {
void woof();
}
#endif
文件功能:
#include <iostream>
#include "bark.hpp"
void woof() {
std::cout << std::endl << "woof" << std::endl;
}
在实现文件中,此定义:
void woof()
{
// ...
}
woof
在全局名称空间中定义一个函数。因此,当您拨打电话时:
bark::woof();
在main
函数中,没有bark::woof
定义,链接器将拒绝链接程序。
要正确定义woof
from命名空间bark
,您需要对其进行限定:
void bark::woof()
{
// ...
}
否则引入名称空间bark
,并在内部定义它:
namespace bark
{
void woof()
{
// ...
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句