Bazen C ve C ++ programlarında NULLdönüş değeri olarak kullanılan kodlayıcılar, main()örneğin böyle bir şey görüyorum :
#include <stdio.h>
int main()
{
printf("HelloWorld!");
return NULL;
}
Bu kodu gcc ile derlediğimde şu uyarıyı alıyorum:
uyarı: return, işaretçi olmadan tamsayı yapar [-Wint-conversion]
Bu makuldür çünkü makro NULLgenişler (void*) 0ve ana dönüş değeri türden olur int.
Kısa bir C ++ programı yaptığımda:
#include <iostream>
using namespace std;
int main()
{
cout << "HelloWorld!";
return NULL;
}
Ve g ++ ile derleyin, eşdeğer bir uyarı alıyorum:
uyarı: NULL değerinden işaretçi olmayan 'int' türüne dönüştürme [-Wconversion-null]
Ama neden uyarı verdiğinde NULLdönüş değeri olarak kullanıyorlar main()? Sadece kötü kodlama tarzı mı?
- Kullanmak sebebi nedir
NULLyerine0dönüş değeri olarakmain()uyarısına rağmen? - Bunun uygun olup olmadığı uygulama olarak tanımlanmış mı ve eğer öyleyse herhangi bir uygulama neden bir işaretçi değeri geri almak isteyesin?
EXIT_FAILURE8 ve bazı programlarda bazen bir başarı olarak kullanıldığından 1'in başarısızlık için iyi olmadığı anlaşılıyor.
NULLişaretçiyi 0(bir oyuncu kadrosu olmadan void *) olarak tanımlamak tamamen geçerlidir . Bu durumda, kusur fark edilmez ve bir uyarı oluşturmaz. NULL için hala kullanılmaması gereken şey bu değil.