2013-08-13 17 views
6

Bir başlık dosyası olarak stdio.h dahil etmeden bir C programı yazmak için herhangi bir olası yöntem var mı. O Sen ile scanf fonksiyonunu ilan edebilir extern int scanf(char* format, ...);stdio.h dahil olmaksızın scanf() nasıl kullanılır

#include <stdio.h> //I want this same code to work without including this line 

int main() 
{ 
    char str [80]; 
    scanf ("%s",str); 
    return 0; 
} 
+15

Neden stdio.h'nin kötü olduğunu düşünüyorsunuz? –

+0

C++ 'da değil, C++' nın daha sık olduğunu düşündüğünüz 'stdio.h' 'ye ihtiyacınız olduğunu göreceksiniz. Örneğin, C, 'NULL' nerede tanımlanır? – cdarke

+2

@WouterHuysentruit Sadece olası çözümler olup olmadığını bilmek istiyorum. – Niko

cevap

10

bildirerek, uygulandığı edilebileceği öne sürüldü:

extern int scanf(const char *format, ...); 

extern anahtar kelimesi isteğe bağlıdır ama aslında bir hatırlatma olarak dahil etmek ister Fonksiyonun başka bir yerde tanımlanmış olması. Fonksiyon prototipleri isteğe olduğu gibi, bu kod, # include olmadan derlemek istiyorum

extern int scanf(const char *format, ...); 

int main() 
{ 
    char str [80]; 
    scanf ("%s",str); 
    return 0; 
} 
+9

Bu, yalnızca "scanf" işlevi olarak uygulandığında çalışır. C şartlarında, 'fscanf' gibi başka bir işlevi çağrıştıran bir makro olamayacağını söyleyen hiçbir şey yoktur. –

+0

Kullanılabiliyorsa, benim için kodu yazabilir misin? Lütfen cevabınızı düzenleyin – Niko

+7

@DavidHammen Hayır. Bölüm 7.1.4/1'den, ISO C99 standardının 155 no.lu dipnotundan: "Bunun anlamı, bir uygulama için bir makro sağlasa bile, her kütüphane işlevi için gerçek bir işlev sunmasıdır. işlevi." Makrolar standart kitaplık işlevlerine * ek olarak sağlanabilir, ancak bunların yerini tamamen değiştiremezler. – jamesdlin

1

C-89: karşılama gibi

Sizin örnek daha sonra görünecektir.

o yapmak gerçekten kötü şeyler 'listesinin altında geldiği, söyledikten sonra - scanf bir makro olabilir, bu bir veya daha fazla gerekli parametreleri sahip olabilir ...

Yani bunu yapabilir, ama geceleri ışıksız sürüş gibi. Yolu bildiğini düşünürsen bile, çarpışmaya yatkınsın.

+0

Reddetme için bir sebep sunabilir misiniz? –

İlgili konular