我在 Ubuntu 下使用 g++ 和使用蓝牙库的 C/C++ 程序的编译过程时遇到一些问题。
如果我使用 gcc,它工作正常,没有任何警告;相反,如果我使用 g++ 我会收到此警告:
警告:正在获取临时地址
即使程序编译良好并且可以工作。
报告错误涉及的行是:
bdaddr_t *inquiry(){
// do some stuff..
bacpy(&result[mote++], BDADDR_ANY);
return result;
}
//...
void zeemote(){
while (bacmp(bdaddr, BDADDR_ANY)){
/..
}
}
在这两种情况下,都涉及 BDADDR_ANY。
我该如何解决这个警告?
BDADDR_ANY 在 bluetooth.h 中定义如下:
/* BD Address */
typedef struct {
uint8_t b[6];
} __attribute__((packed)) bdaddr_t;
#define BDADDR_ANY (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}})
(&(bdaddr_t) {{0, 0, 0, 0, 0, 0}})
构造一个临时对象并使用其地址。这在 C++ 中是不允许的。
您可以通过创建命名临时变量并使用来解决此问题bacpy
and bacmp
on it:
bdaddr_t tmp = { };
bacpy(&result[mote++], &tmp);
and
while (bacmp(bdaddr, &tmp)) {
//
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)