我正在尝试使用Boost中的b2工具编译我的代码。我的代码是用C ++编写的,包含来自C库的一些函数调用,如。
在编译阶段,编译器在两个函数之间混合,write函数是unistd的一部分,write函数是Boost librarues的一部分。
/home/ha/MIH/boost_1_49_0/boost/asio/impl/write.hpp:79:77:从'std :: size_t boost :: asio :: write(SyncWriteStream&,const ConstBufferSequence&,CompletionCondition)实例化[使用SyncWriteStream = int,ConstBufferSequence = message *,CompletionCondition = long unsigned int,std :: size_t = long unsigned int]' socketmid.cpp:152:61:从这里实例化
错误发生在unistid.h中使用的write函数中,如下所示:
if (write(peer_fd, &confirm, sizeof (struct message)) < 0)
{
......
}
那我怎么解决这个问题呢?因为我知道我不能为C函数使用命名空间。
答案 0 :(得分:1)
你似乎用C ++代码调用它(否则Boost Asio无论如何都不会工作),所以你应该能够使用完全限定的命名空间,例如: boost::asio::write
或::write