一般是你在調(diào)用函數(shù)的時候傳遞的是int類型的數(shù)據(jù),但那個函數(shù)定義的參數(shù)類型不是int(比如是結(jié)構(gòu)或者指針或者數(shù)組)。
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比策勒網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式策勒網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋策勒地區(qū)。費用合理售后完善,十載實體公司更值得信賴。
所以在testc里面只是引用包含app_fifo.h這個頭文件的話,因為函數(shù)app_fifo_put沒有被定義,后來執(zhí)行這個函數(shù)時就會報錯 undefined symbol app_fifo_put(未定義符號app_fifo_put)。
函數(shù)定義在 文件r.c 里。編譯時 2個c文件要 一起編,或 把 r.c 先編譯成 r.obj, 鏈接時 鏈接進去。
我用vc2010測試了你的代碼,沒有連接問題,完全正確。但是,如果從工程中,將ds3_seqStackcpp移除,再Build,將得到和你一樣的鏈接錯誤。因此,猜測你是沒有將ds3_seqStackcpp加入工程。
編譯器無法知道你的main函數(shù)里printst()這些是什么意思,所以,在main前面你要申明,即加上void printst(void);意思是告訴編譯器,這個函數(shù)已經(jīng)有了。。你上面寫了3個,我這里只說了一個,每個都要那樣。。
1、1。在Ac中有完整的函數(shù)定義,在Ac中添加一下要用到的函數(shù)原型就可以了,例如:在Ac中:有函數(shù)void A2(){...};在Ac中:在文件前頭增加一行:void A2();就可以了 2。
2、首先建頭文件是為了聲明c文件中的函數(shù),以及包括宏定義。建立頭文件要有對應(yīng)的c文件。要寫頭文件首先要建一個.h文件。打開h文件,進行編輯。建立頭文件是有一定步驟的。要用到#ifndef。。#define。。
3、如果想有運行結(jié)果就必須將函數(shù)實體包含進來,所以文件包含和extern是配合使用的。文件包含只需要包含.h就是實體的頭文件,但有些軟件貌似不能識別頭文件和c的關(guān)系,所以就只能包含.c文件。
4、在一個文件里面的函數(shù),如果要調(diào)用其他文件里的函數(shù)的話,你肯定要先include一下函數(shù)所在的文件,比如在a.c里面想調(diào)用b.c里面的函數(shù),你在a.c里面要加上#include b.c才行。
5、C語言可以在程序中調(diào)用其他文件中的函數(shù)。在大型的程序軟件開發(fā)中,為了代碼的可讀性,或多人同時進行代碼開發(fā),可以各寫自己的源文件,然后,在編譯時,將多個源文件鏈接到一起,就可以形成最終的目標(biāo)程序。
1、在Ac中有完整的函數(shù)定義,在Ac中添加一下要用到的函數(shù)原型(聲明)就可以了,例如:在Ac中:有函數(shù)void A2(){...};。在Ac中:在文件前頭增加一行:void A2();就可以了。
2、將某個源文件的函數(shù)寫到一個頭文件中包含在頭文件中#include 或者直接包含該源文件文件。
3、我們想要在另外一個文件,也就是main.c 中調(diào)用這個函數(shù)的時候,只需要包含它對應(yīng)的頭文件,就可以直接調(diào)用了。