«c» etiketlenmiş sorular

C, sistem programlama (OS ve gömülü), kütüphaneler, oyunlar ve çapraz platform için kullanılan genel amaçlı bir programlama dilidir. Bu etiket, ISO 9899 standardında tanımlandığı gibi C dili ile ilgili genel sorularla kullanılmalıdır (aksi belirtilmedikçe en son sürüm 9899: 2018 - c89, c99, c11 vb. İle sürüme özgü istekleri de etiketleyin). C, C ++ 'dan farklıdır ve rasyonel bir nedenden yoksun C ++ etiketi ile birleştirilmemelidir.

1
Bir ikiliyi 32 bit int'e yuvarlamanın hızlı bir yöntemi açıklandı
Lua'nın kaynak kodunu okurken, Lua'nın a'yı 32-bit'e macroyuvarlamak için kullandığını fark ettim . Çıkardım ve şöyle görünüyor:doubleintmacro union i_cast {double d; int i[2]}; #define double2int(i, d, t) \ {volatile union i_cast u; u.d = (d) + 6755399441055744.0; \ (i) = (t)u.i[ENDIANLOC];} İşte ENDIANLOColarak tanımlanır endian , 0küçük endian için 1büyük …

13
C boyutu “int” 2 bayt mı yoksa 4 bayt mı?
C'deki bir Tamsayı değişkeni 2 bayt mı yoksa 4 bayt mı? Bağlı olduğu faktörler nelerdir? Ders kitaplarının çoğu tamsayı değişkenlerinin 2 bayt içerdiğini söylüyor. Ama bir tamsayılar dizisinin birbirini izleyen adreslerini yazdıran bir program çalıştırdığımda 4 farkını gösteriyor.
169 c  int  byte 


6
C'de neden bazı insanlar imleci serbest bırakmadan önce kullanıyor?
Ben eski bir kod tabanı üzerinde çalışıyorum ve hemen hemen ücretsiz () her çağrışımı kendi argümanı bir döküm kullanır. Örneğin, free((float *)velocity); free((float *)acceleration); free((char *)label); burada her işaretçi karşılık gelen (ve eşleşen) tiptedir. Bunu yapmanın bir anlamı yok. Çok eski bir kod, bu yüzden bir K&R şey olup olmadığını …
167 c  pointers  casting 

18
En hızlı alt dize arama algoritması nedir?
Tamam, bu yüzden bir aptal gibi gelmiyor, problemi / gereksinimleri daha açık bir şekilde ifade edeceğim: İğne (desen) ve samanlık (aranacak metin) C tarzı boş sonlandırılmış dizelerdir. Uzunluk bilgisi verilmez; gerekirse hesaplanmalıdır. İşlev ilk eşleşmeye veya NULLeşleşme bulunmazsa bir işaretçi döndürmelidir . Arıza durumlarına izin verilmez. Bu, sabit olmayan (veya …
166 c  algorithm  string  substring 

9
Uçucu, çok iş parçacıklı C veya C ++ programlamasında neden yararlı değildir?
Son zamanlarda gönderdiğim bu cevapta gösterildiği gibi volatile, çok iş parçacıklı programlama bağlamlarının faydası (veya eksikliği) hakkında kafam karışmış gibi görünüyor . Benim anlayışım şudur: Bir değişken, ona erişen bir kod parçasının kontrol akışının dışında her değiştirilebildiğinde, bu değişken olduğu bildirilmelidir volatile. Sinyal işleyicileri, G / Ç kayıtları ve başka …

9
Windows (Visual C) için unistd.h yerine geçer mi?
Unix için yazılmış nispeten basit bir konsol programı Windows platformuna ( Visual C ++ 8.0 ) taşıyorum . Tüm kaynak dosyalar, var olmayan "unistd.h" dosyasını içerir. Bunu kaldırarak, 'srandom', 'random' ve 'getopt' için prototipleri kaçırmayla ilgili şikayetler alıyorum. Rastgele fonksiyonları değiştirebileceğimi biliyorum ve bir getopt uygulamasını bulabileceğim / hackleyebileceğimden eminim. …
165 c++  c  windows  portability  unistd.h 

4
Neden i ++; ben--; birbiri ardına?
1997 yılında yayımlanan nmap için kaynak koduna bakıyordum ve bana biraz garip görünen kodun bu bölümünü fark ettim: int i=0, j=0,start,end; char *expr = strdup(origexpr); ports = safe_malloc(65536 * sizeof(short)); i++; /* <<<<<< */ i--; /* <<<<<< */ for(;j < exlen; j++) if (expr[j] != ' ') expr[i++] = expr[j]; …
164 c  nmap 


4
uyarı: yerleşik 'xyz' işlevinin uyumsuz örtülü bildirimi
Birkaç ikili dosya derlerken bu uyarıların bir kısmını alıyorum: warning: incompatible implicit declaration of built-in function ‘strcpy’ warning: incompatible implicit declaration of built-in function ‘strlen’ warning: incompatible implicit declaration of built-in function ‘exit’ Bu sorunu çözmek için şunu ekledim: #include <stdlib.h> aşağıdaki bayraklarla derlemeye ek olarak, bu uyarıyla ilişkili C …
164 c  gcc  gcc-warning 


24
__FILE__ makrosu tam yolu gösterir
__FILE__C'de bulunan standart önceden tanımlanmış makro , dosyanın tam yolunu gösterir. Yolu kısaltmanın bir yolu var mı? Demek istediğim /full/path/to/file.c anlıyorum to/file.c veya file.c
164 c  file  macros  path 

5
Gcc'nin __attribute __ ((paketli)) / #pragma paketi güvensiz mi?
C'de, derleyici, her üyenin düzgün bir şekilde hizalandığından emin olmak için bir yapının üyelerini bildirildikleri sırayla, üyeler arasında veya son üyeden sonra olası dolgu baytları ile yerleştirir. gcc __attribute__((packed)), derleyiciye dolgu eklememesini söyleyen ve yapı üyelerinin yanlış hizalanmasına izin veren bir dil uzantısı sağlar . Örneğin, sistem normal olarak tüm …
164 c  gcc  pragma-pack 

6
Geçerli dizini bir C programında nasıl edinebilirim?
Programın başlatıldığı dizini almam gereken bir C programı yapıyorum. Bu program UNIX bilgisayarları için yazılmıştır. Ben bakarak oldum opendir()ve telldir()ancak telldir()bir döner off_t (long int)gerçekten bana yardım etmez, bu yüzden. Bir dizede (char dizisi) geçerli yolu nasıl alabilirim?

13
D Java ve C ++ için güvenilir bir alternatif mi? [kapalı]
Şu anda olduğu gibi, bu soru Soru-Cevap formatımıza uygun değil. Yanıtların gerçekler, referanslar veya uzmanlık tarafından desteklenmesini bekliyoruz, ancak bu soru muhtemelen tartışma, tartışma, oylama veya genişletilmiş tartışma talep edecektir. Bu sorunun çözülebileceğini ve muhtemelen yeniden açılabileceğini düşünüyorsanız, yardım için yardım merkezini ziyaret edin . 7 yıl önce kapalı . …
163 java  c++  c  d 

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.