Иногда я вижу кодеров, которые используют NULL
в качестве возвращаемого значения main()
в C и программах на C ++, например, что-то вроде этого:
#include <stdio.h>
int main()
{
printf("HelloWorld!");
return NULL;
}
Когда я компилирую это ` код с g cc Я получаю предупреждение:
предупреждение: return возвращает целое число из указателя без приведения [-Wint-преобразование]
, что разумно, поскольку макрос NULL
должен быть расширен до (void*) 0
, а возвращаемое значение main должно иметь тип int
.
Когда я создаю короткую программу на C ++:
#include <iostream>
using namespace std;
int main()
{
cout << "HelloWorld!";
return NULL;
}
И скомпилировав его с помощью g ++, я получаю эквивалентное предупреждение:
предупреждение: преобразование в тип без указателя 'int' из NULL [-Wconversion-null]
Но почему они используют NULL
в качестве возвращаемого значения main()
, когда оно выдает предупреждение? Это просто плохой стиль кодирования?
- В чем причина использования
NULL
вместо 0
в качестве возвращаемого значения main()
несмотря на предупреждение? - Определено ли это реализацией, если это уместно или нет, и если да, то почему любая реализация захочет вернуть значение указателя?