2010-11-14 41 views
7

Ben stdio.h dahil olmadan, C printf() fonksiyonunu kullanarak bir şey yazdırmak istedim, bu yüzden olarak program yazdım:printf() nasıl bildirilir?

int printf(char *, ...); 
int main(void) 
{ 
     printf("hello world\n"); 
     return 0; 
} 

yukarıdaki program doğru mu?

+5

Kişisel biçim dizesi olmalıdır const char *. Stdio.h'yi bulabilir ve orada tanımı okuyabilirsiniz. Neden, meraktan çıkıp, # # 0 #'nu istemiyor musunuz? – meagar

+1

stdio.h içermeden ekranda herhangi bir şey yazdırmayı nasıl beklersiniz? Kendi kütüphanelerinizi yazmak zorundasınız .. bu intihar :) – sdadffdfd

+12

@bemace @Vic stdio.h' dahil etme eylemi hiçbir şey bağlamaz, başlık dosyaları bu şekilde çalışmıyor. Bu soru tamamen geçerli ve iyi çalışıyor. – meagar

cevap

18

doğru bildirimi (ISO/IEC 9899: 1999):

int printf(const char * restrict format, ...); 

Ama en kolay ve sadece #include <stdio.h> için en güvenli olacağını olduğunu.

+1

@Saurabh Bunu nerede öğrendiğinizi bilmiyorum, ancak C * işlevindeki işlev prototiplerini (örneğin, bildirimleri) * her zaman noktalı virgülle sonlandırın. Aynısı C++ 'da geçerlidir. –

12

Sadece:

int printf(const char *format, ...); 

doğru olanıdır:

man 3 printf 

Size printf imzayı söyleyecektir.

+0

+1 man için sayfa referansı – Zeke

4

Bunu neden yapmak istediğiniz hakkında hiçbir fikrim yok.

Ancak const char * olmalıdır.

+1

'const char * restrict' –

+0

@Oli: Yalnızca char * bir şeyi etkiler mi? –

+1

@Charles: C99'da, evet. Bu daha önce hiçbir şey için derleme yapmaz. –

-3
int printf(char *, ...); 

çalışmaları insanlar beyanının başka versiyonu bu karakter bir const İşte

+0

oli'nın cevabında charles'in yorumunu okudu. –

0

olması gerekir size edilir anlatıyorsun neden bilmiyorum, sadece iyi:

extern int printf (__const char *__restrict __format, ...); 
İlgili konular