2012-03-17 3 views
4

우분투에서 Bluetooth 라이브러리를 사용하는 C++ 프로그램의 g ++ 및 컴파일 프로세스에 문제가 있습니다.C/C++ 경고 : BDADDR_ANY Bluetooth 라이브러리가있는 임시 주소

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}}) 

답변

4
(&(bdaddr_t) {{0, 0, 0, 0, 0, 0}}) 

임시 객체를 생성하고 주소를 사용합니다. 이것은 C++에서는 허용되지 않습니다. 임시보다는 (어떤에서 범위의 편리)

bdaddr_t tmp = { }; 

bacpy(&result[mote++], &tmp); 

while (bacmp(bdaddr, &tmp)) { 
    // 
} 
+0

어떻게 해결할 수 있습니까? 나는 C++ 전문가 프로그래머가 아니다 : ( –

+0

@MarcusBarnet는 명명 된 변수를 만들고 그것에'bacpy'를 사용한다. –

+0

대답을 주셔서 감사합니다!하지만 bluetooth.h 파일을 수정해야합니다. 그렇지 않으면 프로그램 만 수정해야합니까? –

2

를 변수를 만듭니다

당신은 명명 된 임시 변수를 만들고 여기에 및 bacmp를 사용하여이 문제를 해결할 수 있습니다 ...

bdaddr_t my_bdaddr_any = { 0 }; 
while (bacmp(bdaddr, my_bdaddr_any)) 
    ... 
+0

Tony, thanks to 너도! –