PTT評價

[問卦] 要怎麼規劃前後都會用到的函式 (C語言)

看板Gossiping標題[問卦] 要怎麼規劃前後都會用到的函式 (C語言)作者
Wardyal
(真晝就是個耖機掰)
時間推噓16 推:23 噓:7 →:17

=================

void testA()
{

}

void testB()
{

}

int main()
{

testA();
testB();
testC(); <---
}

void testC()
{

}

void main2()
{
testC();
}


===================

打了幾版別人給我的patch (應該沒編譯過)

發現code變成這樣

因為testC()定義在main()的後面

所以會發生編譯不過的情形 (未定義testC())



想問一下 應該如何去避免說一個函式

因為這種前後定義順序的問題導至編譯不過?




目前想到最笨的方法式

在最前面把所有的函式都

void testA();
void testB();
void testC();
void main2();

定義一次

但是又感覺這樣會不會不好



想問一下 有人知道這種問題通常都怎麼解嗎

(除了一開始好好放順序之外,因為一開始是別人寫的)




--
環醬可愛
https://imgur.com/EF5SmX4.gif


--

※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.91.73 (臺灣)
PTT 網址

bill403777 06/14 14:37我文組 問樓下

Wardyal:轉錄至看板 Marginalman

06/14 14:38

preisner 06/14 14:39不然勒? C不就一定要先宣告或定義

lagi5487 06/14 14:39我也文組 樓下回答

HJC6666 06/14 14:39移到main上

整個移到main的上面是可以 只是覺得這樣可能又會有其他相依性問題

※ 編輯: Wardyal (60.248.91.73 臺灣), 06/14/2024 14:40:44

preisner 06/14 14:41有什麼相依性問題?不要沒問題自己幻想有

preisner 06/14 14:43你不移到上面或先宣告,就編譯不了啊

Goog1e 06/14 14:43好慘 是大一新生嗎 都快放暑假了欸

:0

Informatik 06/14 14:45另外寫一個header file管理

好像也是

orze04 06/14 14:46可能會有什麼

HJC6666 06/14 14:47自己寫編譯器 你愛怎樣都行

akakbest 06/14 14:47這是C編譯的規則吧 你不照他的方式會錯

akakbest 06/14 14:48除非你自己改compile 加載的順序邏輯

brad84622 06/14 14:48宣告在headerfile內 開頭去include

謝謝你 這樣好像比較好

l1724108 06/14 14:49寫在不同C檔裡,linker 會自己去找

arrenwu 06/14 14:50一般來說定義會宣告在 header file 裡面

arrenwu 06/14 14:51你所謂的相依性問題是?

intointo 06/14 14:52重新定義?

archon 06/14 14:53別用 C,改用 Golang

broodkey 06/14 14:54善用ai

chrisjohn214 06/14 14:55那就不要放在前後,放在左右

※ 編輯: Wardyal (60.248.91.73 臺灣), 06/14/2024 14:56:24

henry1234562 06/14 14:56不要用「覺得」來敘述問題

Wardyal 06/14 14:56對不起

shawn0913 06/14 15:01罰你重讀K&R,不然就乖乖用OO

cry589036511 06/14 15:05哪來的白痴幹code

alloc 06/14 15:10就是移到main()上 然後正常都會另外宣告

alloc 06/14 15:10在其他header file再include進來 懂嗎

silkworm046 06/14 15:11你可以在開頭附近加prototype

Lowpapa 06/14 15:12…..

silkworm046 06/14 15:12這篇如果拿去C語言板問可能會被嗆爆

milkBK 06/14 15:13問GPT好很多

pttenjk 06/14 15:14以前一般不是回"作業自己寫"ㄇ

woifeiwen 06/14 15:17==

issuemylove 06/14 15:20作業自己做

issuemylove 06/14 15:21好人真多

Yan5566 06/14 15:21去問chatDPP好嗎

iLeyaSin365 06/14 15:24c cpp是不是都必須宣告在主函式之前

iLeyaSin365 06/14 15:24?都是吧

akakbest 06/14 15:28有可能習慣寫java js python

Forcast 06/14 15:28考什麼試

AgentSkye56 06/14 15:47乾咧寫header file啦 函式寫成DLL

AgentSkye56 06/14 15:47在main裡面呼叫 記得makefile裡面

AgentSkye56 06/14 15:47要link

paul5566 06/14 15:55八卦板不是拿來這樣用的

cocogg 06/14 15:59作業自己寫啦==

AgentSkye56 06/14 16:00你會一直新增test函式的話用陣列指

AgentSkye56 06/14 16:00標比較方便

sufferlove 06/15 01:43全部先給prototype有啥不好嗎