몇 년 전에 이것이 기본적으로 (최소한 GCC에서) 오류를 일으키지 않는다는 것을 깨달은 이래로 나는 왜 그 이유를 궁금해 했습니까?
컴파일러 플래그를 발행하여 경고를 생성 할 수 있지만 항상 오류가 아니어야한다는 것을 알고 있습니다. 무효가 아닌 함수가 값을 반환하지 않는 것이 왜 유효합니까?
주석에서 요청한 예 :
#include <stdio.h>
int stringSize()
{
}
int main()
{
char cstring[5];
printf( "the last char is: %c\n", cstring[stringSize()-1] );
return 0;
}
... 컴파일합니다.
-Werror=return-type해당 경고 만 오류로 취급합니다. 방금 경고를 무시하고 잘못된 this포인터를 추적하는 몇 분의 좌절 이 나를 여기로 이끌어 냈습니다.
std::optional반환하지 않고 함수 의 끝에서 흘러 나오는 것은 "true"옵션을 반환 한다는 사실에 의해 악화됩니다.