【发布时间】:2022-06-22 23:49:22
【问题描述】:
我需要帮助理解 C++ 语法。我指的是 Derek Molloy Github,
/Chp08/i2c/cpp/I2CDevice.cpp
在他的实现文件中,他的代码中有这个部分
int I2CDevice::open(){
string name;
if(this->bus==0) name = BBB_I2C_0;
else name = BBB_I2C_1;
if((this->file=::open(name.c_str(), O_RDWR)) < 0){
perror("I2C: failed to open the bus\n");
return 1;
}
if(ioctl(this->file, I2C_SLAVE, this->device) < 0){
perror("I2C: Failed to connect to the device\n");
return 1;
}
return 0;
}
我对这一行感到困惑,
if((this->file=::open(name.c_str(), O_RDWR)) < 0)。 =::open 到底是什么意思?我知道 C++ 中的 fstream 库有一个 open 方法,但为什么要包含 ::?
【问题讨论】:
-
::open表示“使用全局命名空间中的open函数”。 -
^ 并且不要递归调用
int I2CDevice::open() -
既然他的方法也是“开放的”,包括 :: 有助于防止 fstream 库中的标准开放方法和他的方法之间的任何混淆?只要确保我理解你的回复@Elijay。
-
谢谢!我非常感谢你们的帮助。