【发布时间】:2021-04-15 12:14:18
【问题描述】:
我正在 Unix 上编写一个串行端口,我正在使用头文件 unistd.h。它包含功能:
read(int fd, void *buf, size_t count)
我正在创建一个类来调用这个函数,并且我的类中的一个方法也称为read() 来读取一个字符。但是当我编译时,它说它无法从unistd.h 中识别函数read()。如果我使用 C++,我可以添加 :: 来解决库冲突。使用 C++ 调用 C 库函数时如何解决库冲突?
以后当开发人员使用我的库时,它会变得简单整洁,如下所示:
Serial serial;
serial.read();
我的类名是Serial,包含方法read(),它本身从unistd.h调用函数read()。
【问题讨论】:
-
将 cpp 代码放在命名空间中,这样您就可以使用
::function/my_namespace::function来避免歧义。 -
::read有什么问题? -
如果 read 属于
Serial类,并且Serial::readcall::read应该没问题,你的问题是什么? -
@mpromonet Serial::read 从 unistd 调用 read()
-
serial.read();不是 C,除非read是Serial结构中的函数指针。不要这样标记 C
标签: c++ name-lookup