编译器在Boost :: ASIO写入和unistd写入之间混合

时间:2014-03-25 15:11:55

标签: c++ c boost

我正在尝试使用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函数使用命名空间。

1 个答案:

答案 0 :(得分:1)

你似乎用C ++代码调用它(否则Boost Asio无论如何都不会工作),所以你应该能够使用完全限定的命名空间,例如: boost::asio::write::write