«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.

13
Num ++ 'int num' için atomik olabilir mi?
Genel olarak int num, num++(veya ++num) için, bir okuma-değiştirme-yazma işlemi olarak, atomik değildir . Ancak sık sık derleyiciler, örneğin GCC , bunun için aşağıdaki kodu oluşturmak görüyorum ( burada deneyin ): 5. sıraya tekabül eden num++bir talimat olduğundan, bu durumda num++ bunun atomik olduğu sonucuna varabilir miyiz ? Ve eğer …

2
C önişlemcisi ile iki kez birleştirme ve bir makroyu "arg ## _ ## MACRO" da olduğu gibi genişletme?
Bazı işlevlerin adları böyle bir makro ile belirli bir makro değişkeninin değerine bağlı olduğu bir program yazmaya çalışıyorum: #define VARIABLE 3 #define NAME(fun) fun ## _ ## VARIABLE int NAME(some_function)(int a); Ne yazık ki, makro NAME()bunu int some_function_VARIABLE(int a); ziyade int some_function_3(int a); bu yüzden bu konuda yanlış bir yol …

4
“#Define _GNU_SOURCE” ne anlama geliyor?
Bugün basename()işlevi kullanmak zorunda kaldım ve man 3 basename( burada ) bana garip bir mesaj verdi: notlar Orada iki farklı versiyonları vardır basename () - POSIX versiyonu yukarıda açıklanan ve GNU sürümü bir sonraki alır, #define _GNU_SOURCE #include <string.h> Bunun ne #define _GNU_SOURCEanlama geldiğini merak ediyorum : GNU ile ilgili …
152 c  posix  gnu 

22
C kodunda hata işleme
Bir C kütüphanesinde hataların tutarlı bir şekilde ele alınması söz konusu olduğunda "en iyi uygulama" nı düşünürsünüz. Düşündüğüm iki yol var: Her zaman hata kodunu döndürün. Tipik bir fonksiyon şöyle görünür: MYAPI_ERROR getObjectSize(MYAPIHandle h, int* returnedSize); Her zaman bir hata işaretçisi yaklaşımı sağlayın: int getObjectSize(MYAPIHandle h, MYAPI_ERROR* returnedError); İlk yaklaşımı …
152 c  error-handling 


10
Boşluk * ne demektir ve nasıl kullanılır?
Bugün başkalarının kodunu okurken şöyle bir şey gördüm void *func(void* i);, void*burada sırasıyla işlev adı ve değişken türü için bu ne anlama geliyor? Ek olarak, bu tür bir işaretçiyi ne zaman ve nasıl kullanmalıyız?
152 c 

8
__Stdcall nedir?
Win32 programlama hakkında öğreniyorum ve WinMainprototip şöyle görünüyor: int WINAPI WinMain ( HINSTANCE instance, HINSTANCE prev_instance, PSTR cmd_line, int cmd_show ) Bu WINAPItanımlayıcının ne olduğu konusunda şaşkındım ve buldum: #define WINAPI __stdcall Bu ne yapar? Bir dönüş türü sonra hiç bir şey olması ile kafam karıştı. Ne __stdcalliçin? Dönüş türü …


4
CMake'te, derleyicinin Clang olup olmadığını nasıl test edebilirim?
Bir dizi çapraz platform CMake derleme betiğimiz var ve Visual C ++ ve GCC ile oluşturmayı destekliyoruz . Clang'ı deniyoruz , ancak CMake betiğimizle derleyicinin Clang olup olmadığını nasıl test edeceğimizi anlayamıyorum. Derleyicinin Clang olup olmadığını görmek için ne test etmeliyim? Şu anda sırasıyla Visual C ++ ve GCC'yi test …
151 c++  c  cmake  clang 

4
C'den Call Go işlevleri
Git bir C programı (diyelim ki, bir çekirdek modülü ya da bir şey) ile arayüz yazılı bir statik nesne oluşturmaya çalışıyorum. Go'dan C işlevlerini çağırmayla ilgili belgeler buldum, ancak diğer yöne nasıl gidileceğiyle ilgili pek bir şey bulamadım. Bulduğum şey, mümkün ama karmaşık. İşte buldum: C ve Go arasındaki geri …

4
Neden bu hafıza yiyen gerçekten hafıza yemiyor?
Unix sunucusunda bellek yetersiz (OOM) durumunu simüle edecek bir program oluşturmak istiyorum. Bu süper basit bellek yiyiciyi yarattım: #include <stdio.h> #include <stdlib.h> unsigned long long memory_to_eat = 1024 * 50000; size_t eaten_memory = 0; void *memory = NULL; int eat_kilobyte() { memory = realloc(memory, (eaten_memory * 1024) + 1024); if …


3
.Txt dosyasına yazılsın mı?
Bir .txtdosyaya nasıl küçük bir metin parçası yazabilirim ? 3-4 saatten fazla bir süredir Google'da çalışıyorum, ancak nasıl yapılacağını bulamıyorum. fwrite(); çok fazla argüman var ve bunu nasıl kullanacağımı bilmiyorum. Bir .txtdosyaya yalnızca bir ad ve birkaç numara yazmak istediğinizde kullanabileceğiniz en kolay işlev nedir ? Düzenleme: Kodumun bir parçası …
150 c  linux 

12
Neden x [0]! = X [0] [0]! = X [0] [0] [0]?
Biraz C ++ okuyorum ve işaretçilerle savaşıyorum. Şunu bildirerek 3 seviye işaretine sahip olabileceğimi anlıyorum: int *(*x)[5]; bu *xişaretçi olan 5 öğeden oluşan bir dizi için bir işaretçi int. Ayrıca biliyorum x[0] = *(x+0);, x[1] = *(x+1)vb. Peki, yukarıdaki açıklama göz önüne alındığında, neden x[0] != x[0][0] != x[0][0][0]?
149 c++  c  arrays  pointers 

17
Sabit işaretçilerin anlamı nedir?
Değerleri sabitlemek için işaretçilerden bahsetmiyorum, ama işaretçileri kendileri sabitlemek. Çok temel şeylerin ötesinde C ve C ++ öğreniyorum ve bugüne kadar işaretçilerin işlevlere değerden geçtiğini anladım, bu da mantıklı. Bu, bir fonksiyonun içinde, kopyalanan işaretçiyi, arayandan orijinal işaretçiyi etkilemeden başka bir değere işaret edebileceğim anlamına gelir. Öyleyse şöyle bir işlev …
149 c++  c  pointers  const 

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.