True
나는 gnome-libs를 사용하여 인수 중 하나를 사용하는 프로그램을 컴파일하려고 합니다 . False
그러나 어떤 헤더 파일이 이를 정의합니까?
다음 오류가 발생합니다.
guignome/guignome.c: In function ‘gui_MenuBarEntryShown’:
guignome/guignome.c:1060: error: ‘False’ undeclared (first use in this function)
[...]
guignome/guignome.c: In function ‘creategw’:
guignome/guignome.c:1309: error: ‘True’ undeclared (first use in this function)
guignome/guignome.c:1319: error: ‘False’ undeclared (first use in this function)
다음은 이 오류가 발생하는 코드 부분입니다.
if (optvaltext!=NULL) {
if (strcmp(optvaltext,wme->menuentry->optvalue)) {
gtk_menu_item_configure(GTK_MENU_ITEM(wme->menuentrywidget),ElvFalse,False);
} else {
gtk_menu_item_configure(GTK_MENU_ITEM(wme->menuentrywidget),ElvTrue,False);
};
}; /* optvaltext!=NULL */
파일에는 gnome.h
및 다음만 포함됩니다 glade.h
.
#include <gnome.h>
#include <glade/glade.h>
...훌륭한?
답변1
TRUE
정말로 그렇게 말하고 싶다면 FALSE
/usr/include/glib-2.0/glib/gmacros.h에
#ifndef FALSE
#define FALSE (0)
#endif
#ifndef TRUE
#define TRUE (!FALSE)
#endif
gnome-libs
다른 것을 의미하는 경우, 의미하는 바를 더 정확하게 설명 해야 합니다 .
꽤 합리적인 추측을 추가했습니다.
누락된 매크로에는 GTK에 정의된 내용이 없으며 Elv*
부울은 다음과 같습니다.엘비스 텍스트 편집기:
enum {ElvFalse, ElvTrue} ELVBOOL;
이 코드는 다른 코드 베이스에서 빌려왔으며 헤더가 손실된 것 같습니다. 놀랍지 않게도 이것은 ElvFalse
동일 0
하고 ElvTrue
동일 합니다 1
(적어도 남반구에서는 북반구에서는 그 반대가 사실이라고 들었습니다).
프로토타입이 주어지면:
void gtk_menu_item_configure(GtkMenuItem *menu_item,
gint show_toggle_indicator,
gint show_submenu_indicator);
0과 1의 값은 상수 값에 대한 좋은 추측인 것 같습니다.
댓글에 답글을 추가하려면
elvis-2.2_0/doc/bugs.txt에서:
/ Elvis의 BOOLEAN 및 데이터 유형은 표준 유형과 충돌할 수 있습니다. 해당 이름과 True 및 False 값의 이름을 변경합니다.
그 중 /
저자의 서명은 "나는 문제가 해결되었다고 믿는다"이다. 나올때마다 이상해요
... ElvFalse,False)
코드에서. 그러나 훨씬 더 문제가 되는 것은 여전히 guignome/README.gnome(2003년 10월 작성)입니다:
David Alan Gilbert가 작성한 Elvis Gnome/GTK+ GUI 확장([이메일 보호됨]). 개발단계에요!
버그가 guix11
귀하가 보고한 것과 다르고 최신 Debian/Ubuntu 저장소에는 Gnome 버전의 elvis가 없고 X11만 포함되어 있기 때문에 Unbuntu Maverick에서 Elvis 2.2를 빌드할 수 없습니다. 메인 Elvis 페이지가 2년 전에 마지막으로 업데이트되었기 때문에 Gnome 버전이 최신 Gnome과 작동했거나 작동한 적이 있는지 의심됩니다.
즉, 시도해봐도 나쁠 것은 없습니다.
#define False (0)
#define True (!False)
하지만 그것이 당신을 아주 멀리까지 데려갈지는 확신할 수 없습니다.