2010-03-26 44 views
7

Số đối số nào được sử dụng cho main? Biến thể nào của định nghĩa main là có thể?Có bao nhiêu đối số() có trong C/C++

+0

Ngay tại đó trong các liên kết "Liên quan": http://stackoverflow.com/questions/1621574/mains-signature-in-c Ngoài ra, việc gắn thẻ của bạn không phù hợp với tiêu đề của bạn. – dmckee

+0

đã thêm thẻ 'C++' cho tính nhất quán với tiêu đề – jschmier

Trả lời

22

C++ Tiêu chuẩn: (Source) chuẩn

C++ 98 nói trong phần 3.6.1.2

Nó sẽ có một kiểu trả về kiểu int , nhưng mặt khác loại của nó là được xác định thực hiện. Tất cả triển khai sẽ cho phép cả định nghĩa sau đây của chính: int main() và int main (int argc, char * argv [])

Thường có 3 bộ thông số:

  • không có tham số/void
  • int argc, char ** argv
  • int argc, char ** argv, char ** env

đâu argc là số dòng lệnh, argv là những dòng lệnh thực tế, và env là các biến môi trường.

Windows:

Đối với một ứng dụng cửa sổ bạn có một điểm nhập cảnh của WinMain với một chữ ký khác nhau thay vì chính.

int WINAPI WinMain(
    __in HINSTANCE hInstance, 
    __in HINSTANCE hPrevInstance, 
    __in LPSTR lpCmdLine, 
    __in int nCmdShow 
); 

OS X: (Source)

Mac OS X và Darwin có một tham số thứ tư chứa thông tin hệ điều hành cung cấp tùy ý, ví dụ như đường dẫn đến thực thi nhị phân:

int main(int argc, char **argv, char **envp, char **apple) 
+0

và điều gì về auxv trong linux? – osgx

+1

@osgx: Tôi không chắc chắn nếu những người khác có thể, nhưng 3 đề cập thường ở trên được hỗ trợ bởi g + + –

+0

Tôi chưa bao giờ hiểu được yêu cầu 'main' return' int'. 'main' là hàm duy nhất được cho phép rõ ràng để có giá trị trả về ngầm. Tại sao đi ra khỏi con đường của bạn để cho phép 'chính' để giả vờ là' void', thay vì chỉ đơn giản là cho phép nó được 'void' để bắt đầu với? –

Các vấn đề liên quan