日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cpp遇到问题:include重复包含导致的redefinition

發布時間:2025/4/5 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cpp遇到问题:include重复包含导致的redefinition 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

      • 報錯
      • 解決

報錯

In file included from ./src/disk/elf.h:4,from ./src/disk/code.c:4: ./src/memory/instruction.h:46:16: error: redefinition of ‘struct INSTRUCT_STRUCT46 | typedef struct INSTRUCT_STRUCT| ^~~~~~~~~~~~~~~

解決

這個錯誤是include重復包含了,

#include <header>

所做的事就是把header里面的東西copy一份過來,這樣就容易讓某些文件重復包含,就產生了這樣的錯誤redefinition of something

知道了原理,那么如何解決呢?

請看下面。

解決辦法是使用include guard,類似于設計模式里面的單例模式。將所有的.h文件 使用#ifndef #define #endif這樣的宏來避免重復include.

下面以mmu.h頭文件來說明如何使用

//mmu.h // include guard#ifndef mmu_guard // 如果宏mmm_guard 沒有被定義,則往下執行,如果宏mmm_guard被定義了,則跳轉到#endif #define mmu_guard// memory management unit #include <stdint.h>uint64_t va2pa(uint64_t vaddr);#endif

防止出現重復include的問題,建議所有的頭文件都以這種形式書寫。

總結

以上是生活随笔為你收集整理的cpp遇到问题:include重复包含导致的redefinition的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。