ich folgenden Code habe, die ich mit gcc
#define und #include Ordnung in C
#include<stdio.h>
#include<stdbool.h>
#define true 9
int main() {
printf("TRUE = %d\n",true);
return 0;
}
kompilieren Und ich bekomme Fehler
test.c:3:0: warning: "true" redefined [enabled by default]
In file included from test.c:2:0:
/usr/lib/gcc/x86_64-linux-gnu/4.7/include/stdbool.h:34:0: note: this is the location of the previous definition
Aber wenn ich ändern den Code ein bisschen
#include<stdio.h>
#define true 9
#include<stdbool.h>
int main() {
printf("TRUE = %d\n",true);
return 0;
}
Ausgabe:
TRUE = 1
Frage:
ich den Grund für Fehler in ersten Fall verstehen, aber im zweiten Fall, wenn ich true
definieren, bevor ich #include<stdbool.h>
, warum es true
neu zu definieren, erlaubt?
Update:
Hier ist stdbool.h.
ersten Zeilen sind
#ifndef _STDBOOL_H
#define _STDBOOL_H
#ifndef __cplusplus
#define bool _Bool
#define true 1
#define false 0
, die nichts, wie in der Yu Hao ‚s answer ist.
Ich hoffe, Sie denken nicht ernsthaft über die Definition von True – Bathsheba
@Bathsheba Ich denke, das OP macht einen Test, also braucht er einen anderen Wert als '1' zu sehen, welches Makro funktioniert. –