我想在沒有任何CRT庫的Windows上創建簡單的程序。C++ Windows返回vs ExitProcess
我有兩個代碼:
// compile without -lkernel32
int __stdcall _main() {
return 5;
}
和
// compile with -lkernel32
#include <windows.h>
void __stdcall _main() {
ExitProcess(5);
}
我與編譯它們的MinGW-W64 7.1.0本bash腳本:
@echo off
del main.exe 2>nul
C:\Users\Michal\Downloads\mingw64\bin\g++ main.cpp -o main.exe -O3 -s -nostdlib -lkernel32
main.exe
echo %errorlevel%
pause
輸出(退出代碼)是一樣的。 (我正在使用Windows 7 Pro 64位)
什麼代碼更好? (也許更好的問題是:爲什麼會出現「返回」變種工作?)
編輯:
入口點到程序(defaultly通過連接預先設定的)是_main(通常CRT lib中做了一些工作,然後調用'主'功能,並調用ExitProcess(或類似的東西)從主函數返回的值)。
在我的代碼中,我沒有使用CRT庫,_main仍然是程序的入口點(並且不調用'main'函數)。
使用'return'變體是可移植的代碼,因此應該是首選。 –
@πάνταῥεῖ - 這不是便攜式的變體,這個錯誤的變體 – RbMm
你還需要看看exit和_exit。 – cup