⑴ c語言中,其他文件可否調用文件中的static函數
不能,C語言中的static函數,內部函數和外部函數,函數一旦定義後就可被其它函數調用。
⑵ C語言 如何在一個文件中調用另一個文件的函數 用頭文件
file1.c 頭文件為file1.h
file2.c 頭文件為file2.h
比如file2.c要調用file1.c里的一個函數
首先file2.c里要包含file1.h頭文件(file1.h里有file1.c的函數申明)
然後file2.c文件里要有file1.c里的外部函數申明,用extern關鍵字申明
然後就可以直接file2.c裡面調用file1.c里的函數了
我在單片機里是這樣弄的完全沒問題,51,avr,pic都可以
⑶ c語言調用其他文件的函數怎麼編譯
調用函數庫的話用#include<XXX.h>或者#include"XXX.h"區別是你庫文件放在同一個文件夾還是在IDE的安裝目錄下面,如果你庫文件在你工程文件夾裡面用#include<XXX.h>,否則用#include"XXX.h"
如果你說自己寫庫的話是需要兩個宏命令,#ifndef_XXX_H#define_XXX_H,然後你函數名用extern表示
如果你說編譯的話,你應該說的是編譯原理吧,你可以反匯編一下一個編譯好的程序,如果該處編譯了一個其他函數庫的函數,你可以看到程序把參數PUSH到內存後CALL或者LCALL了一個這個函數的地址,這就完成了匯編中調用函數的部分,我記得X86裡面CALL的機器碼是E8H吧,有興趣的話可以自己用反匯編看一下
這個CALL的話就是調用函數的功能
⑷ c語言能不能在一個文件中寫一個函數,然後再另一個文件中調用
當然可以啦。
舉個例子吧:兩個文件 main.c function.c
我們在function.c 中寫一個函數 func();
與此同時,我們需要寫一個.h文件來聲明這個函數,即function.h
// 以下是function.h 的內容
#ifndef __FUNCTION_H__
#define __FUNCTION_H__
void func();
#endif
// 以下是function.c 的內容
#include "function.h"
void func()
{
// do something
}
這樣一來,我們想要在另外一個文件,也就是main.c 中調用這個函數的時候,只需要包含它對應的頭文件,就可以直接調用了。
// 以下是main.c 的內容
#include "stdio.h"
#include "function.h"
int main()
{
func();
return 0;
}
⑸ C語言中,是否可以調用其它文件的函數
C語言可以在程序中調用其他文件中的函數。
在大型的程序軟體開發中,為了代碼的可讀性,或多人同時進行代碼開發,可以各寫自己的源文件,然後,在編譯時,將多個源文件鏈接到一起,就可以形成最終的目標程序。
各程序中的函數可以是共用的,參考代碼如下:
//a.c
#include <stdio.h>
int funa( int n )
{
printf("n=%d\n", n );
return n*2 ;
}
//main.c
#include <stdio.h>
extern int funa(int); //聲明funa為外部函數
void main()
{
int x=5,y;
y=funa(x);
printf("y=%d\n", y );
}
在linux下,編譯方法為:gcc main.c a.c -o test
在windows下,可建立一個工程,將兩個文件添加到該工程中,編譯,運行即可
⑹ c語言能不能在一個文件中寫一個函數,然後再另一個文件中調用
當然可以啦。x0dx0a舉個例子吧:兩個文件 main.c function.cx0dx0a我們在function.c 中寫一個函數 func();x0dx0a與此同時,我們需要寫一個.h文件來聲明這個函數,即function.hx0dx0a// 以下是function.h 的內容x0dx0a#ifndef __FUNCTION_H__x0dx0a#define __FUNCTION_H__x0dx0ax0dx0avoid func();x0dx0a#endifx0dx0ax0dx0a// 以下是function.c 的內容x0dx0a#include "function.h"x0dx0ax0dx0avoid func()x0dx0a{x0dx0a // do somethingx0dx0ax0dx0a}x0dx0ax0dx0a這樣一來,我們想要在另外一個文件,也就是main.c 中調用這個函數的時候,只需要包含它對應的頭文件,就可以直接調用了。x0dx0a// 以下是main.c 的內容x0dx0a#include "stdio.h"x0dx0a#include "function.h"x0dx0ax0dx0aint main()x0dx0a{x0dx0a func();x0dx0ax0dx0a return 0;x0dx0a}
⑺ C語言中 多個源文件之間函數如何調用
首先要建立一個頭文件,以.h保存
這樣
#include <stdio.h>
typedef struct {
char name[100][60];
char number[100][8];
int mon[100],day[100];
char sex[100];
double height[100];
}inf;
int input(inf *x ,int i);
int output(inf *y ,int h);
當然要有個主函數.
#include "inout.h"
int main(void)
{
int n;
inf id;
do{
printf("*********n");
scanf("%d",&n);
}while(n>100);
input(&id,n);
output(&id,n);
return(0);
}
然後 這個頭文件有兩個函數.這兩個函數,以.c的格式保存.
#include <stdio.h>
#include "inout.h"
int input(inf *x,int i)
{
........
}
#include <stdio.h>
#include "inout.h"
int output(inf *y ,int h)
{
....
}
主函數來負責調用,別的源文件.但是,要有一定要有個頭文件.
就相當說, 站長(主函數)要控制各個列車(多個源文件).需要通過調度台(頭文件)
這是我的理解,我也是剛學.希望大家指正
編譯的時候,要分別編譯,先要把非主函數的源文件便宜成obj格式.
我的編譯器是:cl /c 源文件名.c (cygwin中是 gcc -c 源文件名.c)
最後和主函數結合.
cl main.c 源文件.obj
cygwin中是 gcc -o main main.c 源文件.o
不知道 我說的夠不夠明白
⑻ C語言不同文件中的函數調用
從描述來看是可以的。你的函數有沒有用static修飾?或者把編譯的錯誤提示拿出來看看。