Іноді я бачу кодери, які використовують NULL
як повернене значення main()
в програмах C і C ++, наприклад щось подібне:
#include <stdio.h>
int main()
{
printf("HelloWorld!");
return NULL;
}
Коли я компілюю цей `код з gcc, я отримую попередження:
попередження: return робить ціле число від вказівника без виведення [-Wint-convert]
що розумно, оскільки макрос NULL
повинен бути розширений до, (void*) 0
а значення, що повертається основним, має тип int
.
Коли я роблю коротку програму C ++:
#include <iostream>
using namespace std;
int main()
{
cout << "HelloWorld!";
return NULL;
}
І компілюючи його з g ++, я отримую еквівалентне попередження:
попередження: перехід до типу "int", що не вказує, з NULL [-Wconversion-null]
Але чому вони використовують NULL
як повернене значення, main()
коли воно кидає попередження? Це просто поганий стиль кодування?
- Яка причина використовувати
NULL
замість0
зворотного значення,main()
незважаючи на попередження? - Чи визначено це реалізацією, якщо це підходить чи ні, і якщо так, чому будь-яка реалізація хотіла б повернути значення вказівника?
EXIT_FAILURE
це 8, і, здається, використання 1 не дуже добре для провалу, оскільки це колись використовується як успіх у деяких програмах.
NULL
покажчик як 0
(без відтворення на void *
). У цьому випадку вада залишається непоміченою і не генерує попередження. Це все ще не те, для чого слід використовувати NULL.