2026年11月12日 星期四

(好康福利)專業級程式碼,由你來填寫

 (好康福利)專業級程式碼,由你來填寫


詹宗運製作 詹宗運的筆記


寫程式碼是一種所謂一棒接著一棒的接力賽事業,

第一棒通常由業界的超級人士來擔任,

有時候這些人士因為緋聞而退休,

其他地區時候因為其他業界原因而退休。

AI可以完成這些退休事件發生時所造成的

人力空缺。

為了記念這個歷史性的空白時刻,

我也來寫一篇宗運版的空白程式碼,

投資給未來的我,與未來的新手來填寫。

以下的程式碼只有一個主要位置可以填寫,

填寫好了以後有各種除錯區塊可以呼叫,

秀什麼都可以,就像填寫一份DirectX專業表單一樣輕鬆,

技術上不難。

使用十分方便,是我愛用的基本架構,

今天趁這個業界空白的時刻隆重推出,

讓業界在空白的時刻有空白的程式碼可以工作。

未來一定可以拋磚引玉,

使業界產生下一代的工業級程式碼寫作高手。

使用視同購買,費用0元,推廣期間歡迎

大家來信分享使用的各種心得喔。


使用方式:

1,打開VC++2005,建立一個有正常的stdafx.h的win32主控台專案,這裡假設專案名稱為project1.vcproj,有stdafx.h與project1.cpp。

2,你要使用時可以刪除你的project1.cpp舊有內容並且把下面提供的project1.cpp拷貝貼上,覆蓋你的project1.cpp。拷貝將會成功,並且在編譯成功以後,變成一個可行的空白程式碼的範例專案。

3,以下是宗運版的Visual C++ 2005空白程式碼project1.cpp:(拷貝貼上即可)


// project1.cpp : 此檔案包含 'main' 函式。程式會於該處開始執行及結束執行。

//


 // project1.cpp

 // Visual C++ 2005 compatible

 // RTC Run-Time Error Handler


#include "stdafx.h"

#include <windows.h>

#include <rtcapi.h>

#include <iostream>

#include <exception>

#include <stdexcept>

#include <stdio.h>

#include <stdarg.h>

#include <stdlib.h>


using namespace std;


// 防止錯誤處理函式再次進入時發生遞迴鎖死

#pragma runtime_checks("", off)


static volatile LONG g_IsRunning = 0;


// RTC 執行階段錯誤處理函式

int __cdecl MyErrorHandler(

    int errType,

    const char* file,

    int line,

    const char* module,

    const char* format,

    ...)

{

    char s[1024];

    const char* ErrorDesc;

    _RTC_ErrorNumber ErrorNumber;

    va_list ArgList;


    // 不等待鎖定,避免遞迴進入時無限等待

    if (InterlockedCompareExchange(

        &g_IsRunning, 1, 0) != 0)

    {

        OutputDebugStringA(

            "MyErrorHandler: recursive entry detected.發現遞迴進入\n");


        return 0;

    }


    // 取得 RTC 錯誤編號

    va_start(ArgList, format);

    ErrorNumber = va_arg(ArgList, _RTC_ErrorNumber);

    va_end(ArgList);


    // 取得錯誤描述

    ErrorDesc = _RTC_GetErrDesc(ErrorNumber);


    if (ErrorDesc == NULL)

    {

        ErrorDesc = "Unknown run-time error未知執行期錯誤.";

    }


    // 組合錯誤訊息

    sprintf_s(

        s,

        sizeof(s),

        "%s occurred.\n"

        "Error type: %d\n"

        "Line: %d\n"

        "File: %s\n"

        "Module: %s\n\n"

        "Click OK to return to the debugger.按下OK鍵返回.",

        ErrorDesc,

        errType,

        line,

        file ? file : "Unknown",

        module ? module : "Unknown");


    // 顯示錯誤訊息

    MessageBoxA(

        NULL,

        s,

        "Run-Time Error執行期錯誤",

        MB_OK | MB_ICONERROR);


    // 釋放防遞迴旗標

    InterlockedExchange(&g_IsRunning, 0);


    // 回傳 1,要求 RTC 執行階段進行偵錯中斷

    return 1;

}


#pragma runtime_checks("", restore)



// 一般 C++ 例外處理函式

// 與 RTC 回呼函式使用不同的參數簽章

void MyErrorHandler(const char* message)

{

    cout << endl;

    cout << "========== MyErrorHandler ==========" << endl;

    cout << "Error Message錯誤訊息: "

        << (message ? message : "Unknown exception未知錯誤")

        << endl;

    cout << "====================================" << endl;

}



// 主程式

int _tmain(int argc, _TCHAR* argv[])

{

    _RTC_error_fn OldHandler = NULL;


    try

    {

        // 安裝自訂 RTC 錯誤處理函式

        OldHandler = _RTC_SetErrorFunc(&MyErrorHandler);

        //==== 主要程式碼區塊 ====

        //==== 在這裡填寫 ====

        //==== 你的程式碼 ====

        //==== 例如: ====


        cout << "Hello World!哈囉!" << endl;

        cout << "Program started.程式碼內容在此執行." << endl;


        // 測試一般 C++ 例外

        // 取消下一行註解即可測試 try-catch

        // throw runtime_error("Test exception occurred.測試例外發生!");


        cout << "This line will execute if no exception occurs.如果沒有例外將會看到這一行."

            << endl;


        //==== 填寫程式碼 ====

        //==== 到這裡完成 ====

        //==== 下載視同購買! ====

        //==== 費用0元! ====

        //==== 歡迎來信分享! ====


    }

    catch (const exception& ex)

    {

        MyErrorHandler(ex.what());

    }

    catch (...)

    {

        MyErrorHandler("Unknown exception occurred.未知意外發生.");

    }



    cout << endl;

    cout << "Program continues after exception handling.在例外處理後~ 程式繼續." << endl;

    cout << "在這裡進行結尾的程式碼執行." << endl;

    cout << "Press Enter to exit.按下Enter鍵離開." << endl;



    // 還原原本的 RTC 錯誤處理函式

    _RTC_SetErrorFunc(OldHandler);



    cin.get();


    return 0;

}


沒有留言:

張貼留言