最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用C語言編寫一個十六進制日志轉換工具

 更新時間:2025年11月19日 08:30:19   作者:小范好好學習  
這篇文章主要為大家詳細介紹了如何利用C語言編寫一個十六進制日志轉換工具,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

當然可以!下面是對您提供的 C 程序 逐行添加詳細注釋,并附上整體功能說明,幫助你徹底理解每一部分的作用。

整體功能總結

該程序用于 處理帶時間戳的十六進制日志文件(如串口/調試日志),自動跳過時間戳部分(如 15:00:30.625 - ),僅提取其后的合法十六進制字節(jié)(如 AA 55 36...),并將其轉換為 C 語言風格的十六進制格式(如 0xAA 0x55 0x36...),輸出到一個 .dat 文本文件中。

  • 不生成二進制文件,輸出仍是人類可讀的文本
  • 嚴格丟棄時間戳,避免誤解析(如 15 被當作 0x15

帶詳細注釋的完整代碼

// 引入標準庫:輸入輸出、內存操作、字符串處理、字符類型判斷
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

// 函數:將單個十六進制字符('0'-'9', 'A'-'F', 'a'-'f')轉換為對應的數值(0-15)
// 例如:'A' → 10, 'f' → 15, '3' → 3
// 若輸入非法字符(如 'G', 'Z', '@'),返回 -1
int hexCharToValue(char c) {
    if (c >= '0' && c <= '9') return c - '0';          // 數字字符轉數值
    if (c >= 'a' && c <= 'f') return c - 'a' + 10;     // 小寫 a-f 轉 10-15
    if (c >= 'A' && c <= 'F') return c - 'A' + 10;     // 大寫 A-F 轉 10-15
    return -1;                                         // 非法字符
}

// 主函數
int main() {
    // 定義文件指針,用于讀取輸入和寫入輸出
    FILE *inputFile, *outputFile;

    // 存儲用戶輸入的文件名(不含擴展名)
    char inputFileName[256], outputFileName[256];

    // 存儲完整的帶擴展名的文件路徑(預留一點額外空間防溢出)
    char fullInputFileName[260], fullOutputFileName[260];

    // 用于存儲從輸入文件讀取的每一行內容
    char line[4096];  // 支持非常長的日志行

    // 提示用戶輸入輸入文件名(不帶 .txt)
    printf("請輸入輸入文件名(不含.txt): ");
    scanf("%s", inputFileName);  // 注意:不能包含空格

    // 提示用戶輸入輸出文件名(不帶 .dat)
    printf("請輸入輸出文件名(不含.dat): ");
    scanf("%s", outputFileName);

    // 構造完整的輸入文件名:拼接 ".txt"
    strcpy(fullInputFileName, inputFileName);        // 先復制基礎名
    strcat(fullInputFileName, ".txt");               // 再追加擴展名

    // 構造完整的輸出文件名:拼接 ".dat"
    strcpy(fullOutputFileName, outputFileName);
    strcat(fullOutputFileName, ".dat");

    // 以文本模式打開輸入文件(只讀)
    inputFile = fopen(fullInputFileName, "r");
    if (!inputFile) {  // 如果打開失敗(文件不存在/權限問題等)
        perror("無法打開輸入文件");  // 打印系統(tǒng)錯誤信息(如 "No such file")
        return 1;      // 退出程序,返回錯誤碼
    }

    // 以文本模式創(chuàng)建/覆蓋輸出文件(只寫)
    outputFile = fopen(fullOutputFileName, "w");
    if (!outputFile) {
        perror("無法創(chuàng)建輸出文件");
        fclose(inputFile);  // 關閉已打開的輸入文件,避免資源泄漏
        return 1;
    }

    // 行號計數器(可用于調試或日志)
    int lineNumber = 0;

    // 循環(huán)讀取輸入文件的每一行,直到文件結束
    while (fgets(line, sizeof(line), inputFile)) {
        lineNumber++;

        // 在當前行中查找分隔符 " - "
        // strstr 返回首次出現 " - " 的位置指針,若未找到則返回 NULL
        char *pos = strstr(line, " - ");
        if (!pos) {
            // 如果當前行沒有 " - ",說明不是標準日志格式,跳過該行
            continue;
        }

        // 計算十六進制數據開始的位置:跳過 " - "(共3個字符:空格、減號、空格)
        char *hexStart = pos + 3;

        // 使用 strtok 按空白字符(空格、制表符、換行等)分割 hexStart 中的內容
        // 第一次調用傳入字符串,后續(xù)傳入 NULL
        char *token = strtok(hexStart, " \t\r\n");
        int first = 1;  // 標記是否是當前行的第一個有效十六進制值(用于控制空格)

        // 循環(huán)處理每一個分割出的 token(即可能的十六進制字節(jié)字符串)
        while (token) {
            // 只有當 token 長度恰好為2,且兩個字符都是合法十六進制字符時才處理
            if (strlen(token) == 2 && 
                hexCharToValue(token[0]) != -1 && 
                hexCharToValue(token[1]) != -1) {

                // 將兩個十六進制字符組合成一個字節(jié):
                // 高4位 = 第一個字符的值 << 4,低4位 = 第二個字符的值
                int byteVal = (hexCharToValue(token[0]) << 4) | hexCharToValue(token[1]);

                // 如果不是第一個值,先輸出一個空格(保證格式:0xAA 0x55 ...)
                if (!first) {
                    fprintf(outputFile, " ");
                }

                // 以 "0xXX" 格式寫入輸出文件(%02X 表示兩位大寫十六進制,不足補0)
                fprintf(outputFile, "0x%02X", byteVal);

                first = 0;  // 標記已輸出至少一個值
            }
            // 繼續(xù)獲取下一個 token(strtok 內部維護狀態(tài))
            token = strtok(NULL, " \t\r\n");
        }

        // 如果當前行成功解析出至少一個十六進制值,則在行尾添加換行符
        if (!first) {
            fprintf(outputFile, "\n");
        }
    }

    // 關閉文件,釋放資源
    fclose(inputFile);
    fclose(outputFile);

    // 打印成功提示
    printf(" 處理完成!已嚴格丟棄所有時間戳,僅保留 ' - ' 后的十六進制數據。\n");
    printf("結果保存至: %s\n", fullOutputFileName);

    return 0;  // 正常退出
}

工具準備清單

  • 編譯器:安裝 GCC(Windows 可用 MinGW 或 WSL)
  • 編輯器:VS Code + C/C++ 插件
  • 終端:Git Bash(Windows)或 Terminal(Mac/Linux)
  • 調試:學會用 printf 打印中間變量(最簡單有效!)

最后鼓勵

你現在的狀態(tài)非常好——不是從抽象語法開始學,而是從一個真實問題出發(fā)。這種“做中學”的方式效率最高!

記?。好恳粋€資深程序員,都曾卡在 fopen 返回 NULL 的問題上。

如果你愿意,我可以:

  • 為每一章提供 精簡筆記 + 練習題
  • 給你一個 可交互的學習計劃表(帶打卡)
  • 提供 log 轉 bin 的完整進階代碼

這是一份為你量身定制的 「以十六進制日志解析器」為項目驅動的C語言學習路線圖。整個路線緊密圍繞你的代碼展開,逐層深入,每個階段都有明確的實踐目標。

階段一:夯實C語言基礎(1-2周)

章節(jié)1.1:開發(fā)環(huán)境搭建與調試入門

目標:能編譯運行你的代碼,并理解每一步執(zhí)行過程。

知識點:GCC編譯命令、調試器GDB基礎、斷點、單步執(zhí)行、觀察變量

實踐任務

  • 手動編譯你的代碼:gcc your_code.c -o hexparser -Wall -Wextra -g
  • 用GDB在hexCharToValue函數入口設置斷點,觀察'A''f'、'9'的轉換過程
  • strtok循環(huán)中設置斷點,觀察每個token的拆分結果

關鍵技能:學會用調試器驗證你的假設,這是最高效的學習方式

章節(jié)1.2:C程序結構解剖 —— 你的代碼是第一課

目標:徹底理解代碼骨架,能復述每行作用。

知識點#include預處理器、main函數簽名、返回值意義、注釋規(guī)范

實踐任務

  • 刪除某個#include,觀察編譯錯誤信息(理解每個頭文件的作用)
  • int main()改為void main(),觀察警告信息
  • main函數不同位置return不同的值(0, 1, 2),用echo $?查看退出碼

關聯代碼:你代碼中的#include、函數定義、返回值

章節(jié)1.3:數據類型與變量 —— 內存的抽象

目標:理解你代碼中每個變量的內存布局和大小。

知識點int、char、數組的本質、sizeof運算符

實踐任務

  • 打印所有數組和變量的大?。?code>printf("line size: %zu\n", sizeof(line));
  • 創(chuàng)建測試函數,驗證char的取值范圍(-128~127)和無符號版本
  • 理解你的代碼為什么用int byteVal而不是char byteVal(防止溢出和位運算提升)

關聯你的代碼char line[4096]int byteVal、FILE *

章節(jié)1.4:運算符與表達式 —— 位運算專項

目標:親手重寫并理解十六進制轉換的核心邏輯。

知識點:位移<<、按位或|、算術轉換、運算符優(yōu)先級

實踐任務

拆解表達式:int byteVal = (hexCharToValue(token[0]) << 4) | hexCharToValue(token[1]);

token[0] = 'A', token[1] = 'F'時,在紙上畫出每一步的位變化

重寫hexCharToValue函數,用switch-case代替if鏈(理解不同實現)

手動實現一個decCharToValue函數,轉換十進制字符'0'-'9'

核心洞察:位運算是C高效處理底層數據的精髓

章節(jié)1.5:控制流 —— 代碼的決策邏輯

目標:畫出你代碼的執(zhí)行流程圖。

知識點if-else鏈、while循環(huán)、continuebreak

實踐任務

  • main函數畫流程圖(包括文件打開失敗、循環(huán)讀取、token處理分支)
  • while(fgets(...))改造為do-while循環(huán),思考何時用哪種
  • strtok循環(huán)中添加break,測試在什么條件下跳出最合適

關聯代碼if (!inputFile)、while (token)if (strlen(token)==2)

階段二:字符串與內存操作精講(2-3周)

章節(jié)2.1:字符操作深度實踐

目標:重寫并優(yōu)化hexCharToValue函數。

知識點:ASCII碼表、ctype.h庫(isxdigit、tolower)、字符與數字關系

實踐任務

  • 用標準庫重寫函數:if (isxdigit(c)) { return (isdigit(c) ? c-'0' : tolower(c)-'a'+10); }
  • 對比你的實現和標準庫實現的優(yōu)劣(依賴性、性能、可讀性)
  • 擴展:實現一個valueToHexChar反向函數(0-15 → '0'-'F')

關鍵理解:字符在C中就是小整數,'A''a'小32

章節(jié)2.2:字符串基礎與string.h全家桶

目標:從代碼出發(fā),掌握所有用到的字符串函數。

知識點strcpystrcat、strstrstrlen、strtok的行為與陷阱

實踐任務

  • 安全改造:將strcpy(fullInputFileName, inputFileName)改為strncpy并手動補\0
  • 對比實驗strstr vs. strchr,用strchr(line, '-')能否替代strstr(line, " - ")?
  • strtok的坑:在一個循環(huán)中同時處理兩行數據(會失敗),理解其靜態(tài)內部狀態(tài)
  • 內存重疊實驗:用strcpy復制重疊內存區(qū)域,觀察未定義行為

必讀手冊man strtok時特別注意"WARNING"部分

章節(jié)2.3:字符串高級操作與內存安全

目標:讓你的代碼健壯到能處理惡意輸入。

知識點:緩沖區(qū)溢出、strncpy/snprintf、strnlen、防御性編程

實踐任務

  • 算一筆賬:如果用戶輸入inputFileName為255個字符,你的代碼會溢出嗎?(會!strcat后超256)
  • 重構:用snprintf(fullInputFileName, sizeof(fullInputFileName), "%s.txt", inputFileName);替代strcpy+strcat
  • 防御:在hexCharToValue開頭加斷言:if (c == '\0') return -1;
  • 模糊測試:創(chuàng)建一個.txt文件,包含超長行、空行、" - "后無內容、非法十六進制字符,測試你的程序崩潰點

核心價值:C程序員的第一職責是保護內存

章節(jié)2.4:十六進制與字節(jié)流專項

目標:擴展代碼,支持更多格式。

知識點:十六進制字符串、字節(jié)序、二進制表示

實踐任務

  • 支持前綴:修改代碼,能識別0xAA0Xbb、AAh等多種格式
  • 反向操作:編寫一個valueToHexString函數,將字節(jié)數組轉為"AA BB CC"字符串
  • 批量轉換:將輸出格式改為純二進制文件(fopen(..., "wb") + fwrite
  • 計算器:寫一個命令行十六進制計算器,輸入1A + 2B,輸出45

關聯代碼:你的核心轉換邏輯是項目基石

章節(jié)2.5:緩沖區(qū)管理藝術

目標:徹底理解fgets(line, sizeof(line), inputFile)的邊界行為。

知識點fgetsgets的區(qū)別、緩沖區(qū)大小計算、行截斷處理

實踐任務

  • 超長行測試:創(chuàng)建一個4097字符的行(不含\n),觀察fgets行為(會截斷)
  • 殘行處理:檢測到行被截斷時(strlen==4095且末位不是\n),如何繼續(xù)讀取剩余部分?
  • 內存占用:嘗試將line改為char *line = NULL; size_t len = 0;并用getline(&line, &len, inputFile)自動分配
  • 性能考量:對比固定緩沖區(qū) vs. getline在處理1GB文件時的內存和速度差異

關鍵理解:C中沒有"字符串類型",只有字符數組和指針約定

階段三:文件與I/O系統(tǒng)實戰(zhàn)(1-2周)

章節(jié)3.1:標準I/O流深度解析

目標:理解printfscanf、fprintf的底層。

知識點stdin/stdout/stderr、緩沖區(qū)機制、格式字符串

實踐任務

  • 重定向實驗./hexparser < input.txt > output.dat 2>error.log,觀察perror輸出到哪
  • 格式控制:將fprintf(outputFile, "0x%02X", byteVal);改為小寫%02x,再改為輸出十進制%03d
  • scanf的坑:輸入文件名帶空格會怎樣?改用scanf("%255s", ...)限制長度
  • 非交互模式:用getenv("INPUT_FILE")環(huán)境變量替代scanf,實現無人值守批處理

關聯代碼:所有I/O函數都是FILE*操作的特例

章節(jié)3.2:文件操作API全掌握

目標:用多種方式重寫文件讀寫邏輯。

知識點fopen模式字符串、fclose必要性、perrorstrerror

實踐任務

  • 模式實驗:將"r"改為"rb",在Windows和Linux下對比處理\r\n的差異
  • 錯誤細分:用if (errno == ENOENT)判斷文件不存在,給出更友好的提示
  • 返回值檢查:檢查fprintf的返回值(寫入字符數),確保數據完整
  • 原子寫入:寫入臨時文件,成功后rename為最終文件名,防止程序崩潰產生半文件

關鍵習慣每個系統(tǒng)調用后檢查返回值

章節(jié)3.3:文本處理管線模式

目標:模仿Unix工具鏈,讓程序更通用。

知識點:管道、過濾器模式、行處理架構

實踐任務

  • Unix化改造:支持從stdin讀取和寫入stdout,文件名留空時自動切換
  • 工具組合cat log.txt | ./hexparser | wc -c統(tǒng)計轉換后的字節(jié)數
  • 多格式輸出:增加命令行選項-o bin輸出二進制,-o c輸出C數組格式
  • 日志輪轉:處理多個輸入文件*.txt,生成對應*.dat

設計哲學:一個好程序應該能嵌入更大的流程

章節(jié)3.4:錯誤處理與健壯性工程

目標:讓你的程序在極端環(huán)境下也不崩潰。

知識點:錯誤碼設計、資源清理(RAII模式)、斷言assert

實踐任務

  • 資源泄漏檢測:注釋掉fclose,用valgrind ./hexparser檢測泄漏
  • 異常路徑清理:在任意return 1前確保所有已分配資源被釋放(用goto cleanup模式)
  • 輸入驗證:在hexCharToValue中,用assert(isxdigit(c))捕獲開發(fā)期錯誤
  • 壓力測試:處理10萬行、每行1MB的輸入文件,監(jiān)控內存占用是否穩(wěn)定

最佳實踐:錯誤處理代碼應占30%以上

階段四:代碼重構與進階技術(2-3周)

章節(jié)4.1:指針進階 —— 從數組到指針的躍遷

目標:將代碼中所有數組操作改為指針操作。

知識點:數組名退化、ptr++、指針算術、const指針

實踐任務

  • 指針化:將line[0]訪問改為*line,token[0]改為*token
  • 遍歷優(yōu)化:用for(char *p = line; *p; p++)替代strtok,手動分割token
  • const correctnessconst char *hexString作為輸入參數,防止意外修改
  • 函數指針:創(chuàng)建一個函數指針數組,支持多種解析格式(十六進制、十進制、二進制)

核心理解:指針是C的靈魂,也是最大的風險源

章節(jié)4.2:動態(tài)內存管理

目標:擺脫固定大小緩沖區(qū)限制。

知識點malloc/free/reallocsizeof陷阱、內存泄漏

實踐任務

  • 動態(tài)行:用getline替代固定line[4096],處理任意長度行
  • 動態(tài)數組:將解析出的字節(jié)存入malloc分配的數組,最后統(tǒng)一寫入
  • 內存泄漏實驗:故意不寫free,用valgrind --leak-check=full觀察
  • 緩沖區(qū)增長策略:實現一個動態(tài)字符串,自動realloc增長(類似C++ std::string

關鍵原則:誰malloc,誰free;配對出現

章節(jié)4.3:模塊化與接口設計

目標:將代碼拆分為可復用的模塊。

知識點:頭文件.h、實現文件.c、API設計、封裝

實踐任務

  • 拆分解析器:創(chuàng)建hex_parser.hhex_parser.c,提供parse_hex_line(const char *line, uint8_t *output)
  • 拆文件模塊:創(chuàng)建file_utils.h,封裝open_file_safely、write_hex_array等函數
  • 單元測試:為hexCharToValue寫測試用例,覆蓋所有分支
  • Makefile:編寫Makefile,支持make、make cleanmake test

工程意義:這是從"腳本"到"軟件"的轉變

章節(jié)4.4:性能優(yōu)化實戰(zhàn)

目標:處理GB級日志文件速度提升10倍。

知識點:緩沖區(qū)大小調優(yōu)、mmap內存映射、減少系統(tǒng)調用

實踐任務

  • 基準測試:用time命令測試處理100MB文件的時間
  • 批量I/O:將fprintf改為sprintf到緩沖區(qū),每8192字節(jié)寫入一次
  • mmap改造:用mmap映射整個文件,指針遍歷替代fgets(進階)
  • 并行化:用pthreads多線程處理文件的不同段(超進階)

優(yōu)化信條:先測量,再優(yōu)化;算法 > 實現 > 編譯器

階段五:項目擴展與工程化(持續(xù)進行)

章節(jié)5.1:命令行工具化

目標:支持./hexparser -i input.log -o output.dat --format=binary。

知識點argc/argvgetopt_long、配置文件

擴展項目

  • 支持通配符./hexparser *.log
  • 支持從ZIP包中讀取文件(集成libzip

章節(jié)5.2:多格式支持

目標:成為通用十六進制轉換工具。

擴展項目

  • 支持Motorola S-record、Intel HEX格式
  • 支持ASCII轉十六進制:./hexparser --reverse0xAA 0xBB轉回AA BB
  • 支持校驗和計算(Checksum, CRC32)

章節(jié)5.3:跨平臺與國際化

目標:在Windows/Linux/macOS無差別運行。

知識點:條件編譯_WIN32、Unicode路徑、編碼轉換

實踐

  • #ifdef _WIN32處理路徑分隔符/ vs \
  • 支持UTF-8文件名(Windows下需_wfopen

章節(jié)5.4:測試與持續(xù)集成

目標:寫出一個"自信"的程序。

知識點:單元測試框架(Check/CUnit)、自動化測試

實踐項目

  • 創(chuàng)建test/目錄,覆蓋所有邊界條件
  • 集成GitHub Actions,每次提交自動測試
  • 生成代碼覆蓋率報告:gcov + lcov

學習進度建議與檢查點

周數攻克章節(jié)產出物自我檢測
11.1-1.5能調試代碼,畫出流程圖不看代碼能復述hexCharToValue邏輯
2-32.1-2.5代碼無緩沖區(qū)溢出隱患valgrind檢測零錯誤
43.1-3.4支持管道操作,錯誤處理完善輸入不存在的文件,輸出清晰錯誤
5-64.1-4.4模塊化代碼 + Makefilemake test通過所有用例
7+5.x支持命令行參數,處理GB文件處理1GB文件內存穩(wěn)定 < 10MB

終極挑戰(zhàn)項目

用你積累的所有知識,重寫本項目并滿足

  • 零警告編譯(-Wall -Wextra -Werror
  • 通過所有邊界測試(空文件、超長行、惡意輸入)
  • 處理1GB文件內存占用<10MB,速度比原版快5倍
  • 輸出同時支持文本0xAA和二進制兩種格式
  • 有完整單元測試,覆蓋率>90%

當你完成時,你已經是合格的C語言系統(tǒng)程序員了!

記住,C語言學習的唯一捷徑就是親手敲每一行代碼,用調試器看每一個變量的變化。你的這段代碼是絕佳的起點,因為它涵蓋了C語言90%的核心知識點。堅持按路線圖實踐,3個月后你會感謝現在的自己!

到此這篇關于利用C語言編寫一個十六進制日志轉換工具的文章就介紹到這了,更多相關C語言十六進制日志轉換內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言版二值圖像統(tǒng)計連通區(qū)域

    C語言版二值圖像統(tǒng)計連通區(qū)域

    這篇文章主要為大家詳細介紹了C語言版二值圖像統(tǒng)計連通區(qū)域的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++基于OpenCV實現手勢識別的源碼

    C++基于OpenCV實現手勢識別的源碼

    這篇文章主要介紹了C++基于OpenCV手勢識別的實現源碼,這里用到背景減法模型知識,具體實例代碼跟隨小編一起看看吧
    2021-09-09
  • 重學c/c++之數據存儲詳解(整數、浮點數)

    重學c/c++之數據存儲詳解(整數、浮點數)

    C語言給定了一些基本的數據類型,下面這篇文章主要給大家介紹了關于重學c/c++之數據存儲(整數、浮點數)的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • 深入理解C語言 static、extern與指針函數

    深入理解C語言 static、extern與指針函數

    這篇文章主要介紹了C語言 static、extern與指針函數,有需要的朋友可以參考一下
    2013-12-12
  • C語言超詳細講解棧與隊列實現實例

    C語言超詳細講解棧與隊列實現實例

    棧和隊列,嚴格意義上來說,也屬于線性表,因為它們也都用于存儲邏輯關系為?"一對一"?的數據,但由于它們比較特殊,因此將其單獨作為一章,做重點講解
    2022-03-03
  • C語言之結構體(struct)詳解

    C語言之結構體(struct)詳解

    本文主要介紹C語言 結構體的知識,學習C語言肯定需要學習結構體,這里詳細說明了結構體并附示例代碼,供大家參考學習,有需要的小伙伴可以參考下
    2021-10-10
  • 三種在C++中高效獲取日志文件最后10行的方法

    三種在C++中高效獲取日志文件最后10行的方法

    C++編程中,你經常需要處理文件,尤其是日志文件,一個非常常見的任務是:我不想看整個10GB的日志文件,我只想看最后?10?行,看看最近發(fā)生了什么,所以本文給大家介紹了三種在C++中高效獲取日志文件最后10行的方法,需要的朋友可以參考下
    2026-01-01
  • C++使用模板實現單鏈表

    C++使用模板實現單鏈表

    這篇文章主要為大家詳細介紹了C++使用模板實現單鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • C/C++指針和取地址的方法

    C/C++指針和取地址的方法

    C/C++指針和取地址的方法,需要的朋友可以參考一下
    2013-04-04
  • c++11之std::async 和std::thread的區(qū)別小結

    c++11之std::async 和std::thread的區(qū)別小結

    std::async和std::thread都是C++11中提供的線程庫,它們都可以用于創(chuàng)建新線程,本文主要介紹了c++11之std::async 和std::thread的區(qū)別小結,感興趣的可以了解一下
    2024-02-02

最新評論

全椒县| 连南| 大埔县| 清水河县| 阳信县| 浮山县| 黄梅县| 康乐县| 靖州| 康乐县| 裕民县| 安福县| 灵宝市| 萝北县| 天长市| 吐鲁番市| 潞城市| 临猗县| 玉屏| 龙州县| 湖州市| 永年县| 洱源县| 宁陕县| 峡江县| 乐昌市| 辽源市| 崇信县| 绥宁县| 大埔县| 湖北省| 叙永县| 潞城市| 科技| 怀远县| 天全县| 旌德县| 宜良县| 平山县| 象山县| 莱州市|