我們通常的做法是用
/*
staments
*/
將代碼注釋掉。
在C語言中,這可不是個好主意,用以上方法你不一定能如愿。如果這段代碼內部原先就有注釋存在,這樣就會出問題。
要從邏輯上刪除一段C代碼,更好的辦法是使用#if 指令,如下:
#if 0
statements
#endif
在#if 和#endif之間的程序段就可以有效的從程序中去除,即使這段代碼之間原先存在注釋也無妨,所以這是一種更為安全的方法。
PS:這個問題使我想起了條件預處理指令的另外一個用法(在孫鑫vc++視頻教程第一課中有提到)
例如:在cpp中我們通常是把類的定義寫在一個頭文件中
假如有一個工程(project)包含三個文件
A.H
statementa
B.H
#include ‘’A.H'
statementb
C.CPP
#include
#include"A.h"
#include"B.h"
comandc
當我們編譯時就會報錯:error C2011: 'xxx' : 'class' type redefinition(xx類重復定義)
因為:A.H被包含了兩次
這時我們就可以采用以下方法,就可以解決重復包含的問題了。
A.H
#ifndef A_H
#define A_H
statementsa
#endif
2. 函數的原型聲明的作用:
a.告訴編譯器這些以后將在源文件中定義的函數的特征,當這些函數被調用時,編譯器就能對他們進行準確性檢查,
3.scanf函數的返回值是函數成功轉換并存儲與參數中的值的個數。
4.絕大多數c編譯器不進行數組下標的有效性檢查,所以你必須自行編寫代碼,否則當程序所讀取的文件超過數組的容量時,錯出來的值就會存儲在緊隨數組之后的內存位置,這樣就會破壞原先存儲在這個位置的數據,可能是其他的變量,也可能是函數的返回地址,這可能會導致多種結果,程序很可能不會按照你預想的那樣運行。
5.注意檢查&&與&,==與=的筆誤
6.有時候需要將一個容納字符的變量定義為int 型,是因為,從文件中讀取字符時當遇到EOF,因為它是一個整型值,它的位數比字符型要多,為了防止將輸入的讀取字符意外的被解釋為EOF,同時也意味著接受字符的變量必須足夠大,足以容納EOF,字符只是小整形術而已,所以用一個整型變量容納字符值并不會引起任何問題。