欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2817|回復: 0
打印 上一主題 下一主題
收起左側

定義自己的頭文件(C語言)

[復制鏈接]
跳轉到指定樓層
樓主
ID:68618 發表于 2014-11-22 15:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
自定義函數庫的方法及應用:

一、2個相關的命令

1、TCC——TC的DOS下的命令行編譯連接工具
2、TLIB——TC的DOS下的庫操作工具

二、1個自定義的函數庫的例子

1、 在TC集成環境下,編一個文件USERADD.C
#define _NO_MAIN
int add(int *a,int *b)
{ int c;
c=(*a)+(*b);
return c;
}
按ALT—F9編譯 生成一個 USERADD.OBJ文件。

2、按F10—F—O 退到DOSSHELL(DOS環境下)
COPY USERADD.OBJ 到 ..\LIB目錄,在\LIB目錄下執行
TLIB USERLIB.LIB+USERADD.OBJ 就生成了一個自己的函數庫 USERLIB,在這個函數庫里就包含了函數模塊 int add(int *a,int *b) 的二進制代碼。現在已經將自定義的函數放進了函數庫,就可以把原文件USERADD.C刪掉不要了。(當然,為了以后維護方便,還是作一個備份為好)。 以后如有其它的函數模塊,也可以編譯后用TLIB 命令加入到這個函數庫里。

3、寫一個包含文件 USER1.H,寫完后COPY到INCLUDE 目錄。內容如下:
int add(int *,int *);

4、作好了以上的自定義函數庫的準備工作,現在就可以使用了。
寫一個程序,取名為ADD-1.C,在程序中調用庫函數add( );
#include<stdio.h>
#include<user1.h>
void main( )
{
int a,b,c;
a=20;b=30;
c=add(&a,&b);
printf(“%d”,c);
}

5、在DOS命令行下,執行 TCC ADD-1.C ..\LIB\USERLIB.LIB 就OK!
運行ADD-1.EXE,可以看到輸出結果 50
=============================================================

注:在DOS下編譯和連接是一件煩心的事情,下面講的方法就可以在TC集成環境下實現編譯和連接。
在上面的第二步中,TLIB命令的執行改為 TLIB CS. LIB+USERADD.OBJ 這里是將自定義函數模塊的二進制代碼加入到 運行時庫CS. LIB里面。(對應不同的編譯模式,選用不同的Cx.LIB)
然后在集成環境下編譯連接 ADD-1.C 就可以了。

附注:CS.LIB 小模式庫
CC.LIB 緊湊模式庫
CM .LIB 中模式庫
CL .LIB 大模式庫
CH .LIB 巨模式庫
(以上五種為運行時庫,無論建立何種程序都要連接這些函數庫)

EMU|FP87:EMU 是浮點數模擬函數庫,而FP87則是當我們具有80X87共處理機時所使用的浮點數函數庫。如果程序中有浮點運算就必須連接這二個函數庫之一,以及MATHx函數庫。
MATHx:數學函數庫。其中x代表s、c、m、l、h字符。

另外,TC 的哪一個庫函數的二進制代碼放在哪一個函數庫里不得而知。但有一點可以肯定,就在這其中的庫里面。


文章2
一些初學C語言的人,不知道頭文件(*.h文件)原來還可以自己寫的。只知道調用系統庫 函數時,要使用#include語句將某些頭文件包含進去。其實,頭文件跟.C文件一樣,是可以自己寫的。頭文件是一種文本文件,使用文本編輯器將代碼編寫好之后,以擴展名.h保存就行了。頭文件中一般放一些重復使用的代碼,例如函數聲明,變量聲明,常數定義,宏的定義等等。當使用#include語句將頭文件引用時,相當于將頭文件中所有內容,復制到#include處。為了避免因為重復引用而導致的編譯錯誤,頭文件常具有
#ifndef   LABEL
#define   LABEL
   //代碼部分
#endif
的格式。其中,LABEL為一個唯一的標號,命名規則跟變量的命名規則一樣。常根據它所在的頭文件名來命名,例如,如果頭文件的文件名叫做hardware.h,
那么可以這樣使用:
#ifndef   __HARDWARE_H__
#define   __HARDWARE_H__
  //代碼部分
#endif
這樣寫的意思就是,如果沒有定義__HARDWARE_H__,則定義__HARDWARE_H__,并編譯下面的代碼部分,直到遇到#endif。這樣,當重復引用時,由于__HARDWARE_H__已經被定義,則下面的代碼部分就不會被編譯了,這樣就避免了重復定義。
另外一個地方就是使用include時,使用引號與尖括號的意思是不一樣的。使用引號(“”)時,首先搜索工程文件所在目錄,然后再搜索編譯器頭文件所在目錄。而使用尖括號(<>)時,剛好是相反的搜索順序。假設我們有兩個文件名一樣的頭文件hardware.h,但內容卻是不一樣的。一個保存在編譯器指定的頭文件目錄下,我們把它叫做文件I;另一個則保存在當前工程的目錄下,我們把它叫做文件II。如果我們使用的是#include <hardware.h>,則我們引用到的是文件I。如果我們使用的是#include “hardware.h”,則我們引用的將是文件II。筆者以前就遇到過一個同事問,為什么他修改了那個頭文件里面的內容,好象跟沒有修改一樣?就是因為他有兩個一樣的頭文件(就像我們剛描述的那樣),他是使用#include<hardware.h>引用的,而他修改時,卻是當前工程所在的目錄下的那個文件                                                                                             
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表