真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言在函數(shù)中定義文件 c語言中如何定義函數(shù)

C語言怎樣才能在頭文件中實現(xiàn)函數(shù)定義?

C語言在頭文件中實現(xiàn)函數(shù)定義,可以按如下方法:

專注于為中小企業(yè)提供做網(wǎng)站、成都網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)泌陽免費做網(wǎng)站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。

新建一個demo.h(也可以為其它文件名)的頭文件,在頭文件中添加函數(shù)定義,如:extern void demo();

新建一個c文件,在文件中將demo.h包含進來:#include“demo.h”,在此文件中將函數(shù)的主體寫上,如下:

void demo()

{

printf("Hello.");

?}

經(jīng)過上述步驟,即可完成在頭文件中實現(xiàn)函數(shù)定義。

在c語言中,如何自定義頭文件

自定義頭文件通常放在使用該頭文件的源文件所在的目錄中,并使用#include "MyHead.h"來包含。

頭文件是不編譯的,因為C語言編譯過程之前有個預編譯過程。在這個過程中用頭文件中的內容替換源文件中“#include”命令,所以在編譯器看來,沒有頭文件,只有源文件。預編譯過程還包括條件編譯。

頭文件為了防止被重復包含,通常的格式是:

/* MyHead.h */

#ifndef _MYHEAD_H_

#define _MYHEAD_H_

(這里是頭文件的內容)

#endif /* _MYHEAD_H_ */

拓展資料

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規(guī)格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業(yè)平臺。

如何在c語言中定義函數(shù)在.h文件,和在新文件中使用

額,書上都有吧。

一般來說,頭文件(.h)都包含了一些常用的而且已經(jīng)通過了測試證明其運行正確的函數(shù),

在自己的程序中用#include引用這些頭文件,直接使用其中一些已經(jīng)寫好的函數(shù),就省去

了很多麻煩,提高了代碼的重用性。例如我們常常在程序中寫下 #include stdio.h 語

句,以使用頭文件 stdio.h 中的函數(shù),比如說printf函數(shù)。可是該如何寫自己的頭文件,

以讓自己的函數(shù)能被再次使用呢?

也許有同學會想,真接把自己的函數(shù)聲明與定義移到.h文件里就可以了。就如下面的做法:

在工程里建好main.c后,再建一個點utils.h文件,把常用的函數(shù)如mean()放這里。

// file name : utils.h

// version : 1

doublemean(double, double); //求兩個數(shù)的均值

doublemean(double a, double b)

{

return (a+b)/2.0;

}

// file name : main.c

// version : 1

#includestdio.h

#include"utils.h"

intmain()

{

double a,b,avg;

a = 1.0;

b = 3.0;

avg = mean(a,b); //調用utils.h里的mean函數(shù)

printf("%lf\n", avg);

return0;

}

以上的代碼是可以編譯通過的,并運行正確的。但是,這樣的代碼并不完善。如果

再寫一個頭文件other.h,而other.h又引用了utils.h的mean()函數(shù),這時就會出

問題:

// file name : utils.h

// version : 1

doublemean(double, double); //求兩個數(shù)的均值

doublemean(double a, double b)

{

return (a+b)/2.0;

}

// file name : other.h

// version : 1

#include"utils.h" //引用 utils.h

doublemean4(double, double, double, double);

doublemean4(double a, double b, double c, double d)

{

returnmean(mean(a,b), mean(c,d)); // 調用了 utils.h 里的 mean 函數(shù)

}

// file name : main.c

// version : 2

// 增加了對other.h的引用

#includestdio.h

#include"utils.h"

#include"other.h"

intmain()

{

double a,b,c,d,avg;

a = 1.0;

b = 3.0;

c = 4.0;

d = 2.0;

avg = mean(a,b); //調用utils.h里的mean函數(shù)

printf("%lf\n", avg);

avg = mean4(a,b,c,d); //調用other.h里的mean4函數(shù)

printf("%lf\n", avg);

return0;

}

而此時,編譯就不能通過了,并出現(xiàn)如下的錯誤信息:

utils.h:9: Error: 'mean'is already defined

究其原因就是,函數(shù)的聲明可以在程序中寫多次,但函數(shù)定義只能有一個。main.c引用了

utils.h文件,因此main.c里會有一個mean()函數(shù)的聲明,而other.h里也引用了utils.h

文件,所以又有一個mean()函數(shù)的聲明。

main.c -- utils.h 第一個mean()

-- other.h -- utils.h 第二個mean()

歷史原因,C/C++編譯器不能將這樣相同的重復聲明區(qū)別開,所以必須通過其它的方法使得工程

里,mean()只被聲明一次。一般來說,都是通過#ifndef/#define/#endif宏命令組合來實現(xiàn)避免

重復聲明的。修改后的代碼如下:

//file name : utils.h

//version 2

#ifndef UTILS_H_INCLUDED // 如果沒有定義標識符

// UTILS_H_INCLUDED,則

// 繼續(xù)編譯下面的代碼,

// 直到 #endif

#define UTILS_H_INCLUDED // 定義標識符 UTILS_H_INCLUDED

doublemean(double, double);

doublemean(double a, double b)

{

return (a+b)/2.0;

}

#endif// UTILS_H_INCLUDED

其它代碼都同前。#ifndef/#endif 就像 if(!(...)) {} 一樣,讓編譯器明白,如果沒有定義標

識符UTILS_H_INCLUDED,就包含下面的代碼,直到#endif;否則,到#endif為止的代碼就不被包

含到文件里。#define表示定義一個標識符(不一定要賦值給這個標識符)。

當main.c引用utils.h時,由于UTILS_H_INCLUDED沒被定義,所以#ifndef與#endif之間的代碼都

會被main.c包含,所以 #define 語句會被執(zhí)行,定義一個UTILS_H_INCLUDED標識符,同時工程里

也有了一個mean()函數(shù)的定義;當main.c引用other.h時,other.h里對utils.h的引用并不會再次

定義mean(),因為UTILS_H_INCLUDED已經(jīng)被定義了,通過#ifndef/#endif的控制作用,雖然other.h

引用了utils.h,但引用的頭文件并沒有包含mean()的聲明,自然就不會再引起重復定義的錯誤,

編譯就能通過了。

基于相同的道理,所有的.h文件,都應該加入#ifndef/#define/#endif的組合,以使頭文件都能

重復利用而不引起重復定義的錯誤。例子中的other.h文件也應如此,這里就留給同學自己添加了。

參考網(wǎng)址:


當前標題:c語言在函數(shù)中定義文件 c語言中如何定義函數(shù)
轉載源于:http://weahome.cn/article/dogogci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部