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

  • Carlos Delgado

    Carlos Delga

    21 HAZİRAN 2011
  • ImBluecams

    ImBluecams

    25 Kasım 2012
  • itfigueres

    itfigueres

    12 EKİM 2013