| 場景 | 說明 |
| DLL 導出函數 | `__declspec(dllexport) int Main(WORD* param)` 供外部調用,非進程入口 |
| 線程函數 | `DWORD WINAPI ThreadProc(LPVOID lpParam)` 強轉為 `WORD*` 使用 |
| 嵌入式/裸機啟動代碼 | 啟動代碼調用 `Main(&arg)` 傳遞參數結構 |
| 教學/測試代碼 | 重命名避開標準 `main`,演示指針參數 |
類型含義
- `WORD`:Windows 數據類型,`typedef unsigned short WORD;`(16 位無符號)。
- `WORD *parameter1`:指向 `WORD` 類型數據的指針,**可能是單個值、數組、或結構體首地址**。
- 返回 `int`:函數執行狀態碼(0 成功,非 0 失敗)。
正確啟動參數獲取方式
控制台程序
int main(int argc, char* argv[]) {
// argc: 參數個數(含程序名)
// argv[0]: 程序路徑
// argv[1]...: 實際參數字符串
for (int i = 0; i < argc; ++i) printf("argv[%d]=%s\n", i, argv[i]);
return 0;
}
Windows GUI 程序
int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrev, PWSTR lpCmdLine, int nCmdShow) {
// lpCmdLine: 完整命令行字符串(Unicode)
// 需自行解析或用 CommandLineToArgvW
int argc; LPWSTR* argv = CommandLineToArgvW(GetCommandLineW(), &argc);
// ... 使用 argv
LocalFree(argv);
return 0;
}
總結
見到 `int Main(WORD *parameter1)`,**不是標準 main**,可能是 DLL 導出、線程入口、嵌入式啟動函數或教學代碼。標準程序入口參數由操作系統規定,不可隨意更改類型。若需傳遞自定義結構,應在標準 `main`/`WinMain` 內解析命令行後構造結構體再傳給內部函數。
- 上一篇文章: 虛擬主機 Perl CGI 500 Internal Server Error 排查指南
- 下一篇文章: PHP 字符串拼接 SQL:雙引號變量解析 vs 串聯運算符對比
Copyright ©
程式碼之家 All Rights Reserved