2011-02-26 30 views
6

Veri türünü C olarak elde etmenin bir yolu var mı? ÖrneğinVeri türünü C'deki bir değişkenden alabilir miyim?

:

 
int foo; 

if (foo is int) 
{ 
    // do something 
} 

falan gibi: peşin

 
if (typeof(foo) == typeof(int)) 
{ 
    // do something 
} 

teşekkür.

+4

Bu bir int, kaynak kodunda bir bakış açısı ile bileceksiniz - yansıma gerek yok! – nos

+1

Soruyu gerçekten anlamadım. Eğer foo'yu int olarak tanımlarsanız, neden sonra derleme zamanında türünü almanız gerekir? Gözlemleme, polimorfizmi uygulamak için nesne yönelimli programlamada yararlıdır, ancak neden C.'de gereksinim duyduğunuzu anlamıyorum. – Greg

cevap

10

Buna türün iç gözetimi veya yansıması denir ve C dili tarafından desteklenmez. Muhtemelen kendi yansıma kütüphanenizi yazmanız gerekecek ve bu önemli bir çaba olacaktır.

+0

Teşekkürler, bunu zaten hayal ettim. Benim gibi bir şey #_Fine MY_INT ve daha sonra özel tipimi tutmak için başka bir değişken ayarla, değil mi? Teşekkürler. – user464230

+1

veya bir alan tanımlayabilirsiniz, bir alan bir "typeid" tutuyor ve diğer alan yapı içinde saklamak istediğiniz herhangi bir değeri tutmak için yeterince büyük. – Jimmy

+0

@Jimmy: BİR VARYANT? http://msdn.microsoft.com/en-us/library/ms221627.aspx –

2

foo bir int isim foo bağlıdır olması. Asla değişemez. Öyleyse böyle bir sınav nasıl anlamlı olur? Hiç işe yaramadığı tek durum makrolardadır, burada foo farklı tip değişkenlere veya ifadelere genişleyebilir. Bu durumda, konuyla ilgili benim geçmiş sorulardan bazıları bakmak olabilir:

Type-generic programming with macros: tricks to determine type?

Determining presence of prototype with correct return type

+1

Tamamen katılıyorum. – Greg

+0

Hiç anlam vermedin ... neyse ... soru emddudley tarafından çözüldü – user464230

0

foo tipi tanımlanır eğer türünü bilemeyiz tek zaman typedef tarafından - eğer durum buysa, örneğiniz bunu yansıtmalıdır. Ve neden türüne bağlı bir şeye ihtiyacın var? Asıl sorununuzu çözmenin bir yolu olabilir, ancak asıl probleminizi sunmadınız.

İlgili konular