Saya terkadang melihat coders yang digunakan NULLsebagai nilai balik main()dalam program C dan C ++, misalnya sesuatu seperti itu:
#include <stdio.h>
int main()
{
printf("HelloWorld!");
return NULL;
}
Ketika saya mengkompilasi kode `ini dengan gcc saya mendapat peringatan:
peringatan: return membuat integer dari pointer tanpa gips [-Wint-conversion]
yang wajar karena makro NULLharus diperluas ke (void*) 0dan nilai pengembalian utama harus bertipe int.
Ketika saya membuat program C ++ singkat:
#include <iostream>
using namespace std;
int main()
{
cout << "HelloWorld!";
return NULL;
}
Dan kompilasi dengan g ++, saya mendapatkan peringatan yang setara:
peringatan: mengonversi ke tipe 'int' non-pointer dari NULL [-Wconversion-null]
Tapi mengapa mereka gunakan NULLsebagai nilai balik main()ketika melempar peringatan? Apakah ini hanya gaya pengkodean yang buruk?
- Apa alasan untuk menggunakan
NULLalih-alih0sebagai nilai balikmain()meskipun ada peringatan? - Apakah implementasi ditentukan jika ini sesuai atau tidak dan jika demikian mengapa implementasi apa pun ingin mendapatkan nilai pointer kembali?
EXIT_FAILUREadalah 8, dan sepertinya menggunakan 1 tidak baik untuk kegagalan karena kadang-kadang digunakan sebagai keberhasilan dalam beberapa program.
NULLpointer sebagai 0(tanpa gips ke void *). Dalam hal ini, cacat tidak diketahui dan tidak menghasilkan peringatan. Masih bukan untuk apa NULL digunakan.