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

  • David Wills

    David Wills

    31 Aralık 2007
  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008
  • Ricardo Cerqueira

    Ricardo Cerq

    28 Mayıs 2008