SORU
16 HAZİRAN 2015, Salı


Neden?'In stdbool.h içerir #sahte sahte tanımlamak

Orada derleyici bir hata işaret edildikten sonra, stdbool.h dosya içerir (diğer şeyler arasında) ise şu satırları dikkatimi çekti:

#define bool  bool
#define false false
#define true  true

stdbool.h C Bir Başlık olsa bile __cplusplus yürüttüğü #ifdef bir blok içinde dolaylı olarak, dolayısıyla c etiketi bulunan ediyorlar.

Bu tanımlar ne gerek var? İşleyişi ile ilgili bazı nedenlerden dolayı gerekli olduklarını düşünüyorum ama çınlama yapar standart ya da parçası olanlar dahil etmek için elinde ne olduğunu merak ediyorum.

CEVAP
16 HAZİRAN 2015, Salı


stdbool.h C Bir Başlık C başlık değil. Genellikle true false zaten C anahtar kelimeler çünkü C programlarında bulunamadı .

Eğer C programı stdbool.h içeriyorsa sonuç olarak, taşıdık-C programı (örneğin C gibi derlenen bir C programı) olduğunu oldukça açık bir göstergesidir. Bu durumda, G GCC stdbool.h: yorum başına bir GNU oluşumu olarak C modunda stdbool.h destekler

/* Supporting <stdbool.h> in C   is a GCC extension.  */
#define _Bool        bool
#define bool        bool
#define false        false
#define true        true

...

/* Signal that all the definitions are present.  */
#define __bool_true_false_are_defined        1

Tin aynı şekilde, G ile uyumluluk için C stdbool.h destekler . Değerleri bilerek burada yerleşik C geleneksel C99 tanımları yerine Türüne göre tanımlanır. Makro olarak muhtemelen gerektiren C99 standard ile bazı uyumluluk sağlamak için tanımlanmıştır

Başlık aşağıdakileri tanımlayacaktırmakrolar: *, true, , *false__bool_true_false_are_defined15.

Bir uygulama ve makrolar bool (true) ve yanlış tanımsız sonra belki yeniden tanımlamak olabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • infiniTuts

    infiniTuts

    18 Ocak 2012
  • NYCarspotter

    NYCarspotter

    26 EYLÜL 2011
  • WK

    WK

    9 Ocak 2006