«c-preprocessor» etiketlenmiş sorular

C ve C ++ dil programlarını derlemeden önce uygulanan metinsel makro işlemci. Bu etiket ayrıca Objective-C veya C # içindeki #directives gibi türetilmiş veya aynı özelliklere sahip diğer derleyiciler / diller hakkında sorular için de kullanılabilir.

19
#ifdef vs #if - kodun belirli bölümlerinin derlenmesini etkinleştirmek / devre dışı bırakmak için bir yöntem olarak hangisi daha iyi / daha güvenli?
Bu bir tarz meselesi olabilir, ancak geliştirme ekibimizde bir miktar bölünme var ve bu konuda başka birinin fikri olup olmadığını merak ettim ... Temel olarak, normal geliştirme sırasında kapattığımız bazı hata ayıklama yazdırma ifadelerimiz var. Şahsen şunları yapmayı tercih ederim: //---- SomeSourceFile.cpp ---- #define DEBUG_ENABLED (0) ... SomeFunction() { int …

3
Clang'ı tespit etmek için önceden tanımlanmış hangi makroyu kullanabilirim?
Kaynak kodumu derlemek için kullanılan derleyiciyi bulmaya çalışıyorum. MSVC veya GCC'yi kontrol etmek için önceden tanımlanmış makroları kolayca bulabilirim ( örneğin bkz. Http://predef.sourceforge.net/ ), ancak clang'ı kontrol edecek herhangi bir makro bulamıyorum. Birisi clang'ın __CLANG__şu anda kodumu neyin derlediğini bilmek için olduğu gibi bir makro tanımlayıp tanımlamadığını biliyor mu?


10
C / C ++ satır numarası
Hata ayıklama amacıyla, C / C ++ derleyicilerinde satır numarasını alabilir miyim ? (belirli derleyiciler için standart yol veya özel yollar) Örneğin if(!Logical) printf("Not logical value at line number %d \n",LineNumber); // How to get LineNumber without writing it by my hand?(dynamic compilation)

6
Gcc, ön işlemeden sonra C kodunu çıkarabilir mi?
C dışında birçok dili desteklemek için birçok ön işleme yönergesine sahip gibi görünen açık kaynaklı bir kitaplık kullanıyorum. Böylece kitaplığın ne yaptığını inceleyebilirim Ön işlemden sonra derlediğim C kodunu görmek isterim , daha çok yazdığım gibi. Gcc (veya Linux'ta yaygın olarak bulunan başka herhangi bir araç) bu kitaplığı okuyabilir, ancak …

7
C / C ++ makrosunda virgül
Böyle bir makromuz olduğunu varsayalım #define FOO(type,name) type name Hangi gibi kullanabiliriz FOO(int, int_var); Ancak her zaman bu kadar basit değil: FOO(std::map<int, int>, map_var); // error: macro "FOO" passed 3 arguments, but takes just 2 Tabii ki yapabiliriz: typedef std::map<int, int> map_int_int_t; FOO(map_int_int_t, map_var); // OK ki bu çok ergonomik …
104 c++  c  macros  c-preprocessor 

11
C Makro ve Fonksiyon
Her zaman makro kullanmanın işlev kullanmaktan daha iyi olduğu örnekler ve durumlar gördüm. Biri bana bir makronun bir işleve kıyasla dezavantajını bir örnekle açıklayabilir mi?


8
Xcode'da bir önişlemci sembolü nasıl tanımlanır
Bir Xcode projesinde özellikler ayarlayarak koşullu derleme için bir sembol ayarlamak mümkün müdür? Amacım, içe aktar / dahil etmek zorunda kalmadan tüm dosyalara açık bir sembol oluşturmaktır, böylece bir dizi ortak sınıf bazı projelerde özel bir davranışa sahip olabilir. Aşağıdaki gibi, ancak kendi sembollerimle. #if TARGET_IPHONE_SIMULATOR ... #endif


12
C ++ ön işlemci __VA_ARGS__ bağımsız değişken sayısı
İnternette cevabını bulamadığım basit soru. Değişken bağımsız değişken makrolarında, bağımsız değişkenlerin sayısı nasıl bulunur? Çözümü varsa, destek ön işlemcisi ile sorun yok. Bir fark yaratırsa, daha fazla yeniden işleme için önişlemci sırasını, listeyi veya diziyi artırmak için değişken sayıda makro bağımsız değişkenini dönüştürmeye çalışıyorum.

4
Tanımlama makrosunda Pragma
Pragma ifadesini diğer ifadelerle birlikte makroya yerleştirmenin bir yolu var mı? Şöyle bir şey başarmaya çalışıyorum: #define DEFINE_DELETE_OBJECT(type) \ void delete_ ## type_(int handle); \ void delete_ ## type(int handle); \ #pragma weak delete_ ## type_ = delete_ ## type Varsa, artırma çözümleriyle (dalga için tasarruf edin) sorun yok.

8
#Defines girintileme
Bu #definetürlerin normalde hiçbir zaman girintili olmadığını biliyorum . Neden? Şu anda #defines, #ifdefs, #elses, #endifs, vs.'nin korkunç bir karışımına sahip bir kod üzerinde çalışıyorum. Bunların tümü genellikle normal C koduyla karıştırılır. 'Lerin girintisiz #defineolması onları okumayı zorlaştırır. Ve girintili kod ile girintisiz kodun karışımı#define bir kabustur. Leri girintilememenin faydası …

14
Xcode 4 (ve bağımlılıklar) ile sorunları Derleme, Derleme veya Arşivleme
Bu soru, geçtiğimiz haftalarda daha genel sorunları kapsayacak şekilde gelişti. xcode4 (ve projeleri yükseltmek daha eskidir xcodes). Bununla birlikte, sorunların çoğu aynı talimatlar kullanılarak çözülebilir. Aşağıdaki sorunlardan herhangi birine sahipseniz, kabul edilen yanıttaki yöntemleri deneyin: Xcode 4 bir Uygulamayı arşivleyemiyor Xcode 4, kullanılamaz bir arşiv oluşturur Xcode 4 bir .ipa …

8
Önişlemci makroları neden kötüdür ve alternatifler nelerdir?
Bunu her zaman sordum ama gerçekten iyi bir yanıt almadım; Sanırım ilk "Merhaba Dünya" yı yazmadan hemen hemen her programcı "makro asla kullanılmamalıdır", "makro kötüdür" gibi bir ifadeyle karşılaşmıştı, sorum şu: neden? Yeni C ++ 11 ile bunca yıldan sonra gerçek bir alternatif var mı? Kolay kısım, #pragmaplatforma özgü ve …

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.