Linux 下C程式的結構:
#include <函式定義檔>
main()
{
程式;
}
前面所練習的是 Ritchie 經典C程式範例,
一支對自己打招呼的輸出程式,讓我們來瞭解,它的內容架構 :
我的第一個 C語言程式,檔名請儲存成 myfirstc.c
/* This is my first C program */
// Class 115 No 08 John
#include <stdio.h>
main( )
{
printf("Hi, This is my first C Program *^_^*") ;
return 0;
}
- 程式內容說明:
- 註解
程式中純粹說明用途,對程式沒有作用的敘述。
用 /*
*/
匡住的程式部分,會當作註解。(區塊註解)
也可以使用
//,則//
到行末,會被當成註解。(行註解)
另外,註解還可用來做簡易debug。
(註解笑話)
- 前置處理宣告 #
include
C語言是一個可讓使用者「手工」打造的程式語言,
初學者如果要撰寫控制電腦的程式,首先從輸出顯示開始,
得先將執行結果訊號輸出顯示到螢幕上,
假如輸出入IO得從底層硬體去處理,是相當困難的。
所以,C語言提供標準函式庫,簡化輸出入工作,
標準函式庫是專業工程師已經寫好定義的程式檔;
只要在撰寫程式內容前,
將這些函式庫(其實也是一個文字檔) 包含(include)進來,
就能直接使用專家做好的函式或副程式功能,
C也很彈性,可以載入一個、或者多個函式庫檔(需要才去含括)!
C程式在執行前,會先載入這些定義檔中的程式,
譬如:printf 函數,是定義在stdio.h這個檔案中,
stdio 是標準輸入/輸出(Standard Input/Output)
的英文縮簡命名,
標準輸入/輸出,包括螢幕、鍵盤和檔案等的輸入/輸出。
載入函式庫有兩種寫法:
#include < > 或
#include " "
前者,告訴C語言編譯器到系統目錄下尋找系統標頭檔案。
後者,告訴編譯器由你指定的目錄位置尋找你寫的檔案。
Windows下, 在你使用的C編譯環境指出完整路徑,
如:#include
"c:\mycfile\mymath.h"
FreeBSD等類Unix系統,gcc 甚至可以省略#include <stdio.h>,
因為系統會自動在編譯時加入這函庫。
- 主程式 main
C的主程式名稱內定是以 main 命名,
可以觀察到,C程式是以類似數學函數的形式來構成,
可簡單用以下寫法:
main( )
Linux或類Unix下,可寫成:
int main()
以前舊版Turbo C寫成下列:
main( void ) 或
void main( void )
void 是無數值無傳回值的意思,
void寫在main前面,
表示主程式無數值會回傳,
其實如果宣告int main,在執行時出狀況,可回傳整數值,
則可以讓作業系統辨認錯誤的狀況,所以這樣的寫法已經少見。
主程式名稱內定為 main
而主程式內容範圍是以main以後的
"{ "、"
}"大括號所包住的部分。
- 程式敘述
每行程式敘述(statement)結尾都要有「
; 」
是告訴 C編譯器,這是一行命令。
- system("PAUSE"); 和 return 0;的作用
在Dev C/C++的環境下,其default codes有這兩行,
同學可測試一下這兩行的作用是什麼呢?
- 存檔說明
- 檔名
一般C語言的程式檔,
是以副檔名來命名辨認.
所以,存檔時,一定要給予 .c 的副檔名。
另外,主檔名要注意如下:
- 儘量別用中文
如:我的第一支C程式.c
因為多數的C編譯器不太支援中文,使用中文如遇上特殊字元時,
將可能造成指令模式無法抓到檔名去編譯的情況。
- 檔名中間避免使用空白或特殊符號
如:my first c.c
許多同學習慣使用微軟MS系統中,檔名中間可使用空白的習慣,
儘管有些Linux支援,但仍可能讓gcc編譯時,誤以為是三個參數
,而出現錯誤!
- [建議] 指用英文或數字,且需連著
在Linux/Unix下,程式檔副檔名如下表:
副檔名 |
說
明 |
處
理 |
備註 |
.c |
C程式 |
preprocess,
compile, assemble |
|
.C |
C++程式 |
preprocess,
compile, assemble |
|
.cc |
C++程式 |
preprocess,
compile, assemble |
|
.cxx |
C++程式 |
preprocess,
compile, assemble |
|
.m |
C Obj程式 |
preprocess,
compile, assemble |
|
.i |
C前置處理 |
compile,
assemble |
|
.ii |
C++前置處理 |
compile,
assemble |
|
在Windows下,Dev-C編譯器會依照程式的副檔名來辨認屬何種語言和處理方式:
檔名則常見如下:
.c 為C程式碼(因為Windows環境下檔名不分大小寫)
.cpp 為C++程式
- 編譯
不論是視窗軟體,
或命令模式
都必須呼叫C的編譯器(Compiler)來編譯程式檔.
在Unix下, 需輸入: gcc
檔案名稱.c
或點選功能選單中的 [執行].
才能讓C的程式編成執行檔來執行(Execute, 或run).
一個程式依時間的先後,有以下時期的執行順序:(90年桃竹苗考題)
(A) Compile time: bind a variable to a type.
(B) Link time: extern variables in C.
(C) Load time: bind variables to memory.
(D) Run time: bind a non-static local variable to memory.
|