main 函数的返回类型只应为 int
8.1 ID_mainReturnsNonInt
main 函数的返回值可作为整个进程执行情况的总结,按惯例返回 0 或 EXIT_SUCCESS 表示执行成功,非 0 或 EXIT_FAILURE 表示执行失败,main 函数的返回值会作为标准 exit 函数的参数。
应采用标准明确支持的方式:
int main(void) { .... } // Compliant
int main(int argc, char *argv[]) { .... } // Compliant
如果将返回值设为 void 或其他非 int 类型,会导致未定义、未声明或由实现定义的行为。
void main() { .... } // Non-compliant
bool main() { .... } // Non-compliant
依据
ISO/IEC 9899:1999 5.1.2.2.1(1)-implementation
ISO/IEC 9899:1999 5.1.2.2.3(1)-unspecified
ISO/IEC 9899:2011 5.1.2.2.1(1)-implementation
ISO/IEC 9899:2011 5.1.2.2.3(1)-unspecified
ISO/IEC 14882:2003 3.6.1(2)-implementation
ISO/IEC 14882:2011 3.6.1(2)-implementation