#include <stdio.h> int main(void) { int month, day, hour, min; char *name; month = 7; day = 27; hour = 9; min = 45; name = "kaiching"; printf("\n\n今天是 %d 月 %d 日\n", month, day); printf("現在是上午 %d:%d\n", hour, min); printf("哈囉, %s!\n\n", name); return 0; } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:csimple.c 功能:簡單顯示訊息的例子 作者:張凱慶 時間:西元2010年7月 */
我們把注意力放到第 21 到 26 行,也就是下圖中的註解 (comment) 區
註解就是用為輔助的說明文字,編譯器編譯時會忽略所有的註解文字。我們在簡單例子中所提供的註解為有關程式的整體資訊,小程式也許不太需要註解就能讀懂,但是當程式發展越來越大的時候,也就是動輒數百到數千、數萬行之時,適當的註解有助於程式後續的發展及維護。
通常軟體開發團隊會有既定的註解模式,諸如哪些地方、什麼時候等等,我們提供的註解是站在教學立場,以提供輔助說明為主。
C 語言的註解方式有兩種,第一種如簡單例子,利用一組斜線加星號 /* ,然後一直到另一組星號加斜線為止 */
/* 註解第一行 */ /* 註解第二行 */ /* 註解第三行 */
這種方式也可跨行
/* 註解第一行 註解第二行 註解第三行 */
也可加在任何程式碼之前或之後
int month, day, hour, min; /* 宣告為整數型態的變數 */ /* 注意,這是指標 */ char *name;
第二種方式為連用兩個斜線 //
// 註解第一行 // 註解第二行 // 註解第三行
這只能做單行的註解,同時只能放在無程式碼的單行或程式碼之後
int month, day, hour, min; // 宣告為整數型態的變數 // 注意,這是指標 char *name;
上例中的字元型態的指標變數 name 被註解化了,因此編譯時會發生錯誤。
註解化可作為發展程式時一種進行測試的技巧,例如除錯時不確定錯誤發生的地方,可將該處先註解化,然後先進行編譯,看是否能編譯成功,以期順利找出錯誤的地方。
問題與討論
- C 語言有哪兩種註解的方式?
- 註解的功能是什麼?什麼情況需要註解呢?
- 若將程式碼全部註解化,編譯時會發生什麼事呢?
7 則留言:
// 這個,只能提供 一行的注解
/* 這個,可以提供 很多行的佇界,
但是,不能 nested
---
---
*/
#if 0
這個,可以提供 很多行的注解,
而且,可以 nested
#if 0
這是 內層的 nested 註解,
為何 需要 nested 註解呢?
恩,說來話長,。。。
#endif
#endif
#if 0 到 #endif 之間的內容是告訴編譯器,這些內容不要被編譯,通常用於測試,把暫時無效的程式碼放到這裡,所要編譯的程式碼放到 #if 1 開頭的地方,因此幾個同時有 #if - #endif 部份的程式碼,就可以互相切換進行測試。這時候,巢狀註解 (nest comment) 的意義亦同,用於註解化程式碼進行測試。感謝提供意見,下一版的 C 語言教材會對這方面討論的更詳細 :)
//注釋是C99後的用法
ansi C 不吃喔 ^.<
是的, // 是參用 C++ 的用法, C99 標準才納入
不過這得看所用編譯器所採用的標準
本站所有 C 程式的範例都採用 GCC 4.0.1 版編譯
// 或 /* */ 都沒問題的 :)
請問 ///三條斜線的註解 代表什麼意思呢?
/// 就是兩條斜線的註解,沒有特別的意思,很可能是輸入的時候不小心多按一次 / 而已 ^_^
///和//意義不同喔雖然都是註解
張貼留言