1. 程式人生 > 實用技巧 >c語言函式與指標複習

c語言函式與指標複習

------------恢復內容開始------------

之前實習學linux kernel說系統呼叫起到一個分隔user space和kernel space的作用

函式的宣告

關於函式宣告這個概念一直沒明白,java中沒見到過

是這樣的,c是從上往下執行的,如果函式寫在main方法的上面則不用宣告,相當於已經識別過一遍了。但是如果函式寫在主函式的下面,編譯器執行完主函式可能不去看下邊的函數了,所以需要宣告。(為啥java不需要?。。查了一下好像是java的編譯器先進一些?)

3、宣告的方法
什麼時候需要宣告
1)主調函式和被調函式在同一個.c 檔案中的時候(可能回來會呼叫

  老師說有些編譯器高階的話可能也不需要宣告??我試試我的

  vscode雖然能把函式執行出來但還是會報錯說需要宣告

1] 直接宣告法(常用)
將被呼叫的函式的第一行拷貝過去,後面加分號

#include <stdio.h>
 void fun();
int main(int argc, char const *argv[])
{
    printf("233333test\n");
    fun();
    return 0;
}
void fun(){
    printf("helloworld\n");
}

2] 間接宣告法
將函式的宣告放在標頭檔案中,.c 程式包含標頭檔案即可

fun.h

extern void fun();

fun.c

#include <stdio.h>
//  void fun();
#include "fun.h"
int main(int argc, char const *argv[])
{
    printf("233333test\n");
    fun();
    return 0;
}
void fun(){
    printf("helloworld\n");
}

2)主調函式和被調函式不在同一個.c 檔案中的時候
一定要宣告
宣告的方法:
直接宣告法
將被呼叫的函式的第一行拷貝過去,後面加分號,前面加 extern(親測不行。。。用下面那個)

update:我知道為什麼不行了,我的vscode沒有配置好。。。gcc命令後面只能跟一個單檔案,不能多檔案我暈


間接宣告法(常用)
將函式的宣告放在標頭檔案中,.c 程式包含標頭檔案即可(fun.c需要新增,main函式.c檔案也要新增!)

#include "fun.h"

不行失敗了總是報錯主函式中找不到那個外部方法

!!!!!!我才知道還得配置多檔案不然他總是gcc單檔案執行

gcc fun.c fun1.h fun1.c -o fun

然後是函式.c檔案包含.h標頭檔案,標頭檔案裡寫上對應函式的宣告,參考這裡

main函式.c檔案中也要包含自定義.h標頭檔案,如果用到方法的話。不在同一級目錄的時候還得加上目錄

哎呀不知道怎麼搞這個setting.json檔案使得gcc後面可以跟多個檔案

還有makefile是什麼啊。。。是隻有Linux中才有嗎?

------------恢復內容結束------------

......ljmtk