2013-07-30 68 views
5

Tôi đã tự hỏi, có cách nào tốt đẹp để sử dụng nội trang __argc và __argv (như trong Visual C++) trong MinGW (tôi đã bao gồm windows.h rồi) hay tôi phải làm một cái gì đó liên quan nhiều hơn để truy cập các thông số này. Tôi muốn như vậy rất nhiều muốn chỉ có công việc mã này trong MinGW (nhưng chúng tôi không phải lúc nào có được những gì chúng ta muốn cho):Sử dụng __argc và __argv trong MinGW

#include <windows.h> 

extern int main(int argc, char* argv[]); 

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, INT) 
{ 
    return main(__argc, __argv); 
} 
+1

Sử dụng 'GetCommandLineW' và' CommandLineToArgvW' để truy xuất các giá trị tương đương. –

+0

Tại sao các phiên bản rộng? – Rollie

+0

Theo tài liệu tôi đã thấy, các phiên bản ANSI thông thường của các chức năng đó có thể không tồn tại. –

Trả lời

4

Đây không phải là "dựng sẵn", họ đang biến toàn cầu được cung cấp bởi Thời gian chạy C. Chúng được khai báo trong <stdlib.h> trong cả tiêu đề thư viện Visual C++ và trong Stephan's MinGW distro. Nếu chúng không được khai báo trong bản sao của bạn <stdlib.h>, bạn chỉ cần tự khai báo chúng.

+0

Cảm ơn, tôi không biết về bản phân phối cụ thể đó. Chỉ vì lợi ích của sự hoàn chỉnh, bạn có thể chỉ cho tôi (hoặc liên kết tôi đến một nơi nào đó mà sẽ chỉ cho tôi) làm thế nào để tuyên bố chính mình mình đúng cách? Cảm ơn nhiều! –

+0

@MaxFeldkamp có thể sử dụng 'extern'. Giống như trong 'extern char ** argv;'. Tôi không nhận được bất kỳ thông báo nào về các biểu tượng chưa được giải quyết với mingw tiêu chuẩn. – mlt

+0

Tôi đã biên dịch thành công nhưng SEGV tại thời gian chạy với '__argc' và' __argv'. Tuy nhiên, tôi đã có thể sử dụng '_argc' và' _argv' (một dấu gạch dưới thay vì hai) mà không có vấn đề gì. – cxw