2010-01-23 28 views
6

Linux'ta gcc 4.4.2 kullanıyorumgcc 4.4.2 varsayılanı c99 mu?

Sadece gcc'nin en son standart olarak c99 ile derlenmesi için otomatik olarak varsayılan bir şey yapmasını mı merak ediyorum?

c89 veya c99 ile derlemek isteyip istemediğimi nasıl belirleyebilirim? Bu standart henüz tam derleyici uygulanmadı için herhangi bir tavsiye için

Çok teşekkürler,

+2

varsayılan hala gnu89 (yani C89 GNU uzantıları ile). –

cevap

9

bir nedeni varsayılan olarak C99 kullanmak değildir. Ancak, gcc'yi derlerken varsayılan modu ayarlayabileceğine inanıyorum, bu yüzden standartların seçimi gerçekten sizin için önemliyse, seçeneği geçmek her zaman daha iyidir.

Seçenekler sırasıyla -std=c99 ve -std=c89'dır. gcc(1) adam sayfasından

+0

Normalde c89 ile daha taşınabilir olarak derledim. Ama c99'un sevdiğim bazı özellikleri var. Ancak, sadece c89'u destekleyen VS kullanarak pencereleri derlemem gerektiğinden c99 standardını kullanamıyorum. VS 2010'un en son sürümü bile c89'u uygulamaz. – ant2009

+0

[GCC C99status] 'u kontrol edersem (https://gcc.gnu.org/c99status.html) Çoğu kullanım durumunu etkileyecek eksik özellikler bulamıyorum. C99 derlemesini kullanmasını engelleyen eksik bir özellik örneği verebilir misiniz? –

+0

@RuudAlthuizen Bu cevap 2010 yılında yazılmıştır. 2016 itibariyle bilgimden en iyi şekilde, yalnızca kayan noktaların uzman yönleri eksik. “'da kayan noktalı ortam erişimi”, “Kitaplık özelliği, derleyici desteği gerekmez” şeklinde işaretlenir ancak aslında bu ** kesinlikle **, GCC'nin sağlamadığı derleyici desteği gerektirir. –

9

:

-std= 
     Determine the language standard. This option is currently only 
     supported when compiling C or C++. 

.... 

     c99 
     c9x 
     iso9899:1999 
     iso9899:199x 
      ISO C99. Note that this standard is not yet fully supported; 
      see <http://gcc.gnu.org/gcc-4.4/c99status.html> for more 
      information. The names c9x and iso9899:199x are deprecated. 

     gnu89 
      GNU dialect of ISO C90 (including some C99 features). This is 
      the default for C code. 

     gnu99 
     gnu9x 
      GNU dialect of ISO C99. When ISO C99 is fully implemented in 
      GCC, this will become the default. The name gnu9x is 
      deprecated.