2014-07-07 5 views
0

나는 Code :: Blocks를 사용하여 Python (Mosquitto MQTT 포함) 스크립트를 다시 작성합니다.빌드 중 경고 메시지 -> 경고 : "bool"이 재정의되었습니다.

그러나 https://bitbucket.org/oojah/mosquitto/src/4deedcb49ff50be94166701f21e5c79ff7667d5b/test/lib/c/02-subscribe-qos0.c?at=default

, 이것은 다음과 같은 경고가 발생합니다 : 시험 삼아 나는 Mosquitto 저장소에 사용할 수있는 다음 코드를 사용

||=== Build: Debug in test (compiler: GNU GCC Compiler) ===| 
..\..\..\..\..\Program Files (x86)\mosquitto\devel\mosquitto.h|56|warning: "bool" redefined| 
c:\mingw32-xy\bin\..\lib\gcc\mingw32\4.5.2\include\stdbool.h|33|note: this is the location of the previous definition| 
obj\Debug\main.o||In function `on_connect':| 

을 나는 주제에 파고 봤는데 그것을 할 수 있다고 생각 포함 경비원을 사용하여 해결할 수 있습니까? 몇 가지 테스트를 수행했지만 올바른 방법을 적용하는 방법을 모르겠습니다.

내가 도움이 :) 미리와 안부와

감사를 요구하기로 결정 숙련 된 C 프로그래머가 아닙니다 때문에.

편집 :

#ifndef _MOSQUITTO_H_ 
#define _MOSQUITTO_H_ 

#ifdef __cplusplus 
extern "C" { 
#endif 

#if defined(WIN32) && !defined(WITH_BROKER) 
# ifdef libmosquitto_EXPORTS 
#  define libmosq_EXPORT __declspec(dllexport) 
# else 
#  define libmosq_EXPORT __declspec(dllimport) 
# endif 
#else 
# define libmosq_EXPORT 
#endif 

#ifdef WIN32 
# ifndef __cplusplus 
#  define bool char 
#  define true 1 
#  define false 0 
# endif 
#else 
# ifndef __cplusplus 
#  include <stdbool.h> 
# endif 
#endif 

을 만들 수있는 빠른 수정이됩니다 : 이것은 잘못 될 수있는 부분이다 https://bitbucket.org/oojah/mosquitto/src/4deedcb49ff50be94166701f21e5c79ff7667d5b/lib/mosquitto.h?at=default

: 나는 mosquitto.h 코드에 대한 링크를 추가했습니다 작업?

답변

1

가드를 포함하면 문제가되지 않습니다.

mosquitto.h에는 매크로 bool의 재 정의가 포함되어 있으며이 매크로는 이미 <stdbool.h>으로 정의되어 있습니다.

이것은 Win32에서만 트리거되는 것으로 보입니다. "우리가 Win32를 기반으로 구축하고 있다면 C99 호환 컴파일러를 사용하지 않기 때문에 우리는 자신의 stdbool.h 호환 선언을 대신해야합니다"라고 가정 한 결과 일 수 있습니다.

물론 잘못된 가정입니다. Win32에서 타사 컴파일러로 빌드하면됩니다. 그것은 아마도 당신이하고있는 일일 것입니다. 코드 :: 블록은 GCC를 사용할 수 있습니다.

나는 논리가 mosquitto.h에 수정이 필요하다고 말하고 싶습니다.