음, 할 수 있었다 .
예를 들어, Plan 9 운영 체제 에서 사용되는 C의 방언에서 main
일반적으로 void
함수 로 선언 되지만 함수에 문자열 포인터를 전달하여 종료 상태가 호출 환경으로 리턴됩니다 exits()
. 빈 문자열은 성공을 나타내고 비어 있지 않은 문자열은 일종의 실패를 나타냅니다. 이것은 수 함으로써 구현 된 main
반환 char*
결과입니다.
그리고 종료 float
또는 double
종료 상태 의 시스템을 구현하는 것이 가능할 것 입니다.
왜 int
? 이는 컨벤션의 문제 일뿐입니다. 운영 체제와 그 아래에서 실행되는 프로그램은 공통 컨벤션을 준수하는 데 엄청난 가치가 있습니다.
유닉스 관례는 성공을 나타내는 0과 0이 아닌 것을 나타내는 정수 상태 코드를 사용하는 것입니다 (일반적으로 성공하는 방법은 하나 뿐이지 만 여러 가지 실패 방법이 있기 때문에). 나는 그 협약이 유닉스에서 유래 한 것인지 모른다. 이전 운영 체제에서 나온 것으로 의심됩니다.
(a) 부동 소수점 지원이 보편적이지 않고, (b) 부동 소수점 값과 오류 조건 사이의 매핑을 정의하기가 더 어렵 기 때문에 부동 소수점은 더 어려운 규칙이 될 수 있습니다. 포인트 표현 및 (d) 프로그램 종료 상태에서 반올림 오류를 추적하는 재미를 상상해보십시오. 반면 정수는 오류 코드를 열거하는 데 매우 적합합니다.
앞서 언급했듯이 Plan 9는 문자열을 사용하지만 메모리 관리, 문자 인코딩 등에 약간의 복잡성을 부과합니다. 내가 아는 한, Plan 9가 그것을 구현했을 때 새로운 아이디어였으며 기존의 것을 대체하지 않았습니다. 광범위한 협약.
(실수로 C ++ 에서는을 반환 main
할 수 있으며 C 에서는 컴파일러가 특별히 지원하는 경우에만 허용됩니다. 많은 컴파일러는 작성해도 크게 크게 불평하지 않지만 잘못되었다고 말하는 것은 약간 과장된 것 입니다.)int
void main
void main