Re: [問題] 請問函式讀不到的問題
我把編譯原理講一下好了,這樣你就知道了
假設今天你有兩個檔案
// sub.cpp
int sub(int a, int b) {
return a>b? a-b: b-a;
}
//main.cpp
int main(){
sub(5, 3);
}
在compile的時候,他會看看sub.cpp,發現了一個sub函式的定義
檢查後確定無誤,好,sub.cpp這檔案編譯完成
接下來看看main.cpp,他發現呼叫了sub這個函式,於是compiler會往上找
可是他在main.cpp裡面怎麼往上找就是找不到sub的宣告
於是他跟你說他找不到這東西,停止編譯
函式能被定義一次,但是可以宣告多次
宣告的意思就像是跟編譯器說「你看我有這個東西」
所以我們通常如果把程式分多個檔案寫
會把函式宣告寫到.h檔裡面,把定義寫到一個.cpp就可以了
用意是要讓大家可以透過#include看的到這函式即可
然後再把.cpp去#include這個.h
#include .h可以把他想成是他會把.h的東西放到cpp裡面來
所以該例會變成
// main.h
int sub(int, int);
// sub.cpp
int sub(int a, int b){
return a>b? a-b: b-a;
}
// main.cpp
#include "main.h"
int main(){
sub(5, 3)
}
這樣compiler在檢查main.cpp的時候,發現他要呼叫到sub函式
他會往上看,這時候因為你有#include宣告,所以他會找到一個候選的sub函式
接著比對型別,型別一致,
編譯器認定沒問題,編譯完成。
※ 引述《mulder1985 (老人)》之銘言:
: 請問一下大家
: 就是我的程式有寫一些副函式
: 可是在compile的時候
: 會出現有些副函式"identifier not found"
: 但是有些卻不會
: 請問這類情況要如何解決呢?
: 謝謝
--
文筆不是很好阿 嘆~
一直想寫一些基本的東西給新手好入門,像是pointer & array,overloading
不過寫出來不清不處會讓人更困惑吧 囧rz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.143.227
→
10/23 02:09, , 1F
10/23 02:09, 1F
→
10/23 02:10, , 2F
10/23 02:10, 2F
→
10/23 02:10, , 3F
10/23 02:10, 3F
→
10/23 02:10, , 4F
10/23 02:10, 4F
推
10/23 02:12, , 5F
10/23 02:12, 5F
→
10/23 02:14, , 6F
10/23 02:14, 6F
推
10/23 02:14, , 7F
10/23 02:14, 7F
推
10/23 02:16, , 8F
10/23 02:16, 8F
→
10/23 02:18, , 9F
10/23 02:18, 9F
→
10/23 02:18, , 10F
10/23 02:18, 10F
→
10/23 02:18, , 11F
10/23 02:18, 11F
→
10/23 02:18, , 12F
10/23 02:18, 12F
→
10/23 02:19, , 13F
10/23 02:19, 13F
→
10/23 02:19, , 14F
10/23 02:19, 14F
→
10/23 02:20, , 15F
10/23 02:20, 15F
→
10/23 02:20, , 16F
10/23 02:20, 16F
→
10/23 02:21, , 17F
10/23 02:21, 17F
推
10/23 07:46, , 18F
10/23 07:46, 18F
推
10/23 12:27, , 19F
10/23 12:27, 19F
→
10/23 12:27, , 20F
10/23 12:27, 20F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章