cpp遇到问题:include重复包含导致的redefinition
生活随笔
收集整理的這篇文章主要介紹了
cpp遇到问题:include重复包含导致的redefinition
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 報錯
- 解決
報錯
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_STRUCT’46 | typedef struct INSTRUCT_STRUCT| ^~~~~~~~~~~~~~~解決
這個錯誤是include重復(fù)包含了,
#include <header>所做的事就是把header里面的東西copy一份過來,這樣就容易讓某些文件重復(fù)包含,就產(chǎn)生了這樣的錯誤redefinition of something
知道了原理,那么如何解決呢?
請看下面。
解決辦法是使用include guard,類似于設(shè)計模式里面的單例模式。將所有的.h文件 使用#ifndef #define #endif這樣的宏來避免重復(fù)include.
下面以mmu.h頭文件來說明如何使用
//mmu.h // include guard#ifndef mmu_guard // 如果宏mmm_guard 沒有被定義,則往下執(zhí)行,如果宏mmm_guard被定義了,則跳轉(zhuǎn)到#endif #define mmu_guard// memory management unit #include <stdint.h>uint64_t va2pa(uint64_t vaddr);#endif防止出現(xiàn)重復(fù)include的問題,建議所有的頭文件都以這種形式書寫。
總結(jié)
以上是生活随笔為你收集整理的cpp遇到问题:include重复包含导致的redefinition的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: github遇到问题Updates we
- 下一篇: bilibili深入理解计算机系统笔记(