c學習筆記

大學時學的是C語言,還時常想起當時那個C語言老師是所有老師中我最欽偑的一個.
畢業出來之後卻一直在用JAVA,閒來翻起C語言看了看,現把部分資料陸續整出來,不想這麼早就給忘光了。。。呵。。。

一.關於預處理命令(preprocessor directives)
[color=red]這是C語言所特有的功能。[/color]
C語言編譯系統大致包括:預處理、編譯和連接運行三個部分.
預處理命令用以改進程序編寫效率,不是C語言本身的組成部分,不是C語句,末尾不需加分號。不能直接對它們進行編譯。它是處在C語言的編譯的預處理部分,都是'#'開頭.
主要有以下三種形式:
1.宏定義:#define
宏定義是專門用於預處理命令的一個專用名詞,它與定義變量或函數的含義不同,只作單純的字符替換,不分配內存空間.
a.不帶參數形式:#define 宏名 字符串
b.帶參數形式::#define 宏名(參數表) 字符串
eg.

#define S(a,b) a*b
main()
{
int a=3;
int b=4;
int area = S(a,b);
printf("%d\n",area);

}
#undef S(a,b)

上例中的#define~~~~#undef定義了宏名S(a,b)的有效范圍。使用此命令可以有效控制宏定義的修作用范圍.
2.文件包含:#include
文件包含:一個源文件可以將另外一個源文件的全部內容包含進來,並且將合並後的文件當成一個新的文件進行編譯,被包含的文件必需是源文件(.c)而不是目標文件(.obj).相當於把另外一個文件當成是程序開發過程中的某一個標准零件,實現節省重復編制的目的.
(.h)格式表明此(.c)源文件是頭文件。
一個#include只能包含一個文件.
在使用C語言庫函數時,要用預編譯命令“#include”將有關的“頭文件”包括用戶源文件中,在頭文件中包含了與用到的函數有關的信息。常用的有:
[list]
[*]標准輸入輸出庫函數:"stdio.h"
C語言本身不提供輸入輸出語句,輸入輸出是由函數實現的。printf和scanf不是C語言的關鍵字,只是函數的名字,C語言提供的函數是以庫的形式存放在系統中的,它們不是C語言文本的組成部分
[*]標准數學庫函數:"math.h"
[/list]

#include "stdio.h"和#include <stdio.h>都是合法的,區別在於:
[list]
[*]<stdio>方式:系統存放C庫函數頭文件所在的目錄中尋找所要包含的文件,即為標准方式;
[*]"stdio"方式:系統先到服務設施當前目錄中尋找要所要包含的文件,如果找不到,再按標准方式.
[/list].

3.條件編譯
顧名思義,即是是對一部分滿路條件的程序段進行編譯運行,這樣可以提高程序運行效率,也可以增加程序的移植性的可維護性.
有如下幾種形式:
[list]
[*]當所指定的標識符已經被#define命令定義過,則只編譯程序段1,否則編譯程序段2.

#ifdef 標識符
程序段1
#else
程序段2
#endif

[*]同上相反

#ifndef 標識符
程序段1
#else
程序段2
#endif

[*]當指定的表達式值為真(非零)時就編譯程序段1,否則編譯程序段2

#if 表達式
程序段1
#else
程序段2
#endif

[/list]


二.如何運行一個多文件程序
1.Turbo C集成環境下
[list]
[*]例如有3個文件:file1.c,file2.c,file3.c
[*]在編譯狀態下,建立一個“項目文件”,不包括任何程序語言,而只包括組成程序的所有文件名,即:file1.c file2.c file3.c ;
擴展名.c可以省略,文件順序任意如果這些源文件不在當前目錄下,應指出路徑.
[*]將以上內容存盤,文件名自定,但擴展名必須為.prj(表示為project文件).假設取名為a.prj.
[*]在Turbo C主菜單中選擇Project菜單,按回車鍵後出現下拉菜單,找到其中的Project name項並按Enter鍵,屏幕上會出現一個對話框,詢問項目文件名。
[*]將*.prj改為a.prj.此時菜單中的Project name後面會顯示出項目文件名a.prj.表示當前准備編譯的是a.prj項目中所包括的文件.
[*]按F9,進行編譯連接,系統先後將3個文件翻譯成目標文件.obj,並把它們連接成一個可執行文件a.exe(文件名主干與項目文件相同);
[*]按CRTL + F9鍵,即可運行可執行文件a.exe.
[/list]

2.在MS C上進行編譯連接
[list]
[*]分別對三個源文件fil1.c,file2.c,file3.c進行編譯,得到3個.obj文件,然後用link把3個目標文件(.obj文件)連接起來,命令如下:
link file1+file2+file3+file4
[*]按下Enter鍵,得到一個可執行文件file1.exe,然後運行它。
[/list]

3.用#include命令
[list]
[*]將file2.c,file3.c包含到file1.c中,在file1.c的開關加入下面兩行指令:
#include "file2.c"
#include "file3.c"

[*]編譯file1.c文件,得到一個可執行文件file1.exe,然後運行它。
[/list]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值