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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

include.cpp(main函数的cpp文件)文件中包含另一个.cpp文件的错误及原因

發布時間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 include.cpp(main函数的cpp文件)文件中包含另一个.cpp文件的错误及原因 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當一個main函數的cpp文件包含另一個cpp文件,使用#include "data.cpp"? 是不可以的,例如下面

include.cpp

#include <stdio.h> #include "data.cpp" //extern void add(); void main() {#include "include.h"#include "yingcheng.itcast"add();getchar();}

?

data.cpp 文件

#include "data.h" #include <stdio.h> void add() {int c = a + b;printf("\n");printf("%d", c);}

data.h

#pragma once int a = 10; int b = 20; int c;

yingcheng.itcast

#pragma once printf("俞文龍真是牛,跟著龍哥學c在也不用擔心c學不會");

include.h

#pragma once printf("jajklsjklsdjkjskljdsadf");

這是我們使用了#include "data.cpp"? 這樣包含一個cpp文件會發現報錯,竟然編譯不通過

?

于是我就查閱了往事的資料,網上資料是這樣說的cpp文件是獨自編譯的。舉例如下

因為在工程編譯的時候各個.cpp文件依次單獨編譯,最后才連接到一起,當在編譯include.cpp文件時,看到include.cpp文件中有#include "data.cpp" 文件時就把data.cpp中的內容和include.cpp一起編譯生成include.obj文件。別忘了data.cpp文件也是.cpp文件也要單獨編譯,編譯完data.cpp文件生成data.obj文件后。再將所有編譯后的.obj文件連接到一生成.exe文件。這時就會發現data.obj中的內容data.obj中也有(因為include.cpp中 #include"ata.cpp")。所以會出現重復定義的錯誤。

這時你可能又會想到把data.cpp文件改名為data.h在include.cpp文件中#include "data.h" 不就行了。因為.h文件不會單獨編譯。確實是這樣。將data.cpp改為data.h后不管工程目錄中有沒有添加data.h文件都可以。可是前面說了.h文件中最好只放聲明。

總結一下:要想把自己實現的函數放到同一個文件中調用,如果放在.h文件中違背了.h文件最好只放聲明的原則。如果放在.cpp文件中在include.cpp中 #include相應的.cpp文件則不能將這個.cpp文件添加到工程目錄下,這樣看起來又不像是一個整體(憑什么哪個.cpp文件就不能出現在工程目錄下)

到底是不是這樣我們也不知道,具體的解決方案是什么?答案是extern? ?

extern可以置于變量或者函數前,以表示變量或者函數的定義在別的文件中,提示變壓器遇到此變量和函數時在其他模塊中尋找其定義。另外,extern也可用來進行鏈接指定。
關于extern更詳細的解釋請看百度百科 所以我們只需這樣:如果在include.cpp中要調用data.cpp中的函數,不要在include.cpp中#include "data.cpp" ,只需在include.cpp中聲明一下要調用的函數,并且聲明前加關鍵字extern

廢話不多說,下面我就試一把,修改代碼如下:

#include <stdio.h>extern void add(); void main() {#include "include.h"#include "yingcheng.itcast"add();getchar();}

編譯成功

?

輸出結果:

好了,關于cpp文件引入另一個cpp文件報錯講解結束,如果你覺得我寫的可以請關注我的博客

總結

以上是生活随笔為你收集整理的include.cpp(main函数的cpp文件)文件中包含另一个.cpp文件的错误及原因的全部內容,希望文章能夠幫你解決所遇到的問題。

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