㈠ c語言頭文件 大小寫問題
大小寫對於頭文件,有以下三種情況,分別介紹:
1. C語言本身對大小寫敏感,所以寫在C語言頭文件,即.h文件中的C語言符號,必須是區分大小寫的。包括宏定義,變數名,類型名,字元串,函數名,參數名等等,所有C語言的標識符都是區分大小寫的。
比如
Str, STR, 以及str是三個完全不同的標識符。
2. 如果在window下編程,由於windows操作系統的文件系統,對文件名和路徑不區分大小寫,這時在編程時使用操作系統相關的操作時,包括
1) 引用頭文件;
2) 執行系統命令;
3) 打開系統文件。
均可以不區分大小寫。
於是在頭文件中如果涉及到了相關操作,是可以不區分大小寫的。
3. 注釋部分,由於不是給編譯器讀的,而是給讀代碼的人准備,所以大小寫可以一定程度上放鬆,只要可以看懂即可。
㈡ c,C++,c#為什麼要大小寫敏感
c,c++,c#的標識符是大小寫敏感的。本人一直十分疑惑,這個到底是優點還是缺點?
說實話,不知道哪位大蝦寫代碼的時候喜歡用同時使用相同的拼寫但大小寫不同的標識符如:
int myName;
int myname;
這樣做只會引起邏輯上的混亂。
而且使用C系列的語言由於標識符寫錯造成編譯錯誤的問題可能佔了不少的數量,特別是當標識符很長
時,特別容易出錯,而編譯器在你輸入標識符的時候根本不進行檢查。而VB系列就做得十分人性化,標識符的拼寫錯誤在第一時間就能被發現。
這樣就只有一個解釋:因為C的歷史比較悠久,而且比較接近底層,而大小寫字元從底層編碼上說是完全不同的字元(ASCII碼不同)因此編譯器在設計時,就把大小寫字元作為完全不同的字元來考慮。(這個可以認為是編譯器設計者偷懶的做法)。可是到了現在,C已經發展了N代了,可是依舊得背這個承重的歷史包袱,實在是可惜。
另外有不少FANS認為這個是表明使用C語言的程序員功力的地方,本人不敢苟同,如果你真要體現功力完全可以用匯編,甚至用機器碼,那個看起來更牛。
㈢ 有關Turbo PASCAL和Free PASCAL的問題
下面是在Turbo Pascal上可以使用,但是在Free Pascal就不能使用的一些語言特性:
1.函數和過程在使用時,參數的類型必須和定義時完全一致。原因是在Free Pascal中添加了函數重載功能。
2.PROTECTED,PUBLIC,PUBLISHED,TRY,FINALLY,EXCEPT,RAISE成為了關鍵字,因此不能作為函數和過程的名字。
3.FAR,NEAR不再是關鍵字了。原因是Free Pascal是32位系統,不再需要這些關鍵字。
4.布爾表達式不一定要全部進行計算。只要最終結果已經能夠確定,就不再計算其它還沒有計算的部分了。比如布爾表達式exp1 AND exp2 AND exp3,如果已知exp1的結果是false,那麼怎麼表達式的結果肯定是false,exp2和exp3就不用進行計算了。
5.在Free Pascal中,集合中的元素都是4個位元組長的。
6.表達式執行的順序是不確定的。比如對於表達式a:=g(2)+f(3); 不保證g(2)一定在f(3)之前執行。
7.如果用Rewrite打開文件,那麼文件就只能被寫入了。如果需要讀取這個文件,要對文件執行Reset。
8.Free Pascal在程序結束之前一定要關閉輸出文件,否則輸出文件可能不能被正確的寫入。
9.Free Pascal理論上可以使用4GB的內存,因此實際上幾乎可以使用系統中的所有剩餘內存(除非程序有內存限制)。這是Free Pascal由於32位的編譯器。但是對於Turbo Pascal來說,由於是16位的編譯器,因此不能定義大小超過64KB的數據類型和變數,並且在DOS實模式下可以使用的內存總數只有640KB。
下面是Free Pascal相對於Turbo Pascal擴充的一些功能:
1.函數可以返回復雜的類型,比如記錄和數組。
2.在函數中,函數的返回值可以作為一個變數來處理。比如:
function a : longint;
begin
a:=12;
while a>4 do
begin
{...}
end;
end;
這個例子在Turbo Pascal中,a>4會被認為是函數的遞歸調用,但是在Free Pascal中會認為a只是一個變數。如果想在Free Pascal中實現遞歸調用,就要寫成下面的形式:
function a : longint;
begin
a:=12;
{ this is the recursive call }
if a()>4 then
begin
{...}
end;
end;
3.exit可以接受一個參數作為函數的返回值。比如:
function a : longint;
begin
a:=12;
if a>4 then
begin
exit(a*67); {函數的返回值就是a*67 }
end;
end;
4.Free Pascal支持函數重載。可以用相同的名字定義不同的函數,只要這些函數的參數不同,就是不同的函數。比如:
procere DoSomething (a : longint);
begin
{...}
end;
procere DoSomething (a : real);
begin
{...}
end;
可以使用不同的參數類型longint或者real來調用不同的DoSomething過程。
由於這個功能,函數的提前聲明必須有完整的參數聲明:
procere x (v : longint); forward;
{...}
procere x;{ 這里定義的過程x重載了前面聲明的過程x。因此這里的兩個x是不同的}
begin
{...}
end;
5.Free Pascal容許運算符重載。比如,可以自己為矩陣運算定義一個「+」運算。
6.Free Pascal在windows 95及其以上的windows版本上支持長文件名。對於文件名,由於windows系統對大小寫不敏感,因此在程序中,文件名的大小寫是無關的。但是對於其它大小寫敏感的系統,比如linux,程序中用到的文件名必須和系統中的文件名完全一致。但是由於信息學競賽的評測系統一般是linux,因此要求程序中的文件名和系統中的文件名一樣。
㈣ 推薦編寫代碼的工具能調整大寫 如filename如何自動寫成FileName
我只能說呵呵,是誰告訴題主這才是規范的?
硬要說規范的話,fileName 才是「比較」通用的寫法。
很榮幸的告訴題主,沒有!
原因就是 VB 是一門大小寫不敏感型語言,同一個詞不分大小寫,編譯器都會認為是一個詞且會自動轉換,所以開發出來題主想要的這種工具是根本沒有用的。
㈤ 關於java里類名和class文件名的首字母大小寫問題。
小寫是可以,但是習慣首字母大寫;並且java文件名要和類名一樣,這是規定。
網上找了個編程規范,供參考:
3. 命名約定
所有變數的定義應該遵循匈牙利命名法,它使用3字元前綴來表示數據類型,3個字元的前綴必須小寫,前綴後面是由表意性強的一個單詞或多個單片語成的名字,而且每個單詞的首寫字母大寫,其它字母小寫,這樣保證了對變數名能夠進行正確的斷句。
這樣,在一個變數名就可以反映出變數類型和變數所存儲的值的意義兩方面內容,這使得代碼語句可讀性強、更加容易理解。
3.1 包、類及方法命名
標示符類型 命名約定 例子
包 全部小寫。
標識符用點號分隔開來。為了使包的名字更易讀,Sun 公司建議包名中的標識符用點號來分隔。
Sun 公司的標准 java 分配包用標識符 .java 開頭。
全局包的名字用你的機構的 Internet 保留域名開頭 。 局部包:
interface.screens
全局包:
com.rational.www. interface.screens
類,介面 類的名字應該使用名詞。
每個單詞第一個字母應該大寫。
避免使用單詞的縮寫,除非它的縮寫已經廣為人知,如HTTP。 Class Hello ;
Class HelloWorld ;
Interface Apple ;
方法 第一個單詞一般是動詞。
第一個字母是小些,但是中間單詞的第一個字母是大寫。
如果方法返回一個成員變數的值,方法名一般為get+成員變數名,如若返回的值是bool變數,一般以is作為前綴。
如果方法修改一個成員變數的值,方法名一般為:set + 成員變數名。
getName();
setName();
isFirst();
變數 第一個字母小寫,中間單詞的第一個字母大寫。
不要用_或&作為第一個字母。
盡量使用短而且具有意義的單詞。
單字元的變數名一般只用於生命期非常短暫的變數。i,j,k,m,n一般用於integers;c,d,e一般用於characters。
如果變數是集合,則變數名應用復數。
命名組件採用匈牙利命名法,所有前綴均應遵循同一個組件名稱縮寫列表。 String myName;
int[] students;
int i;
int n;
char c;
btNew;
(bt是Button的縮寫)
常量 所有常量名均全部大寫,單詞間以『_』隔開。 int MAX_NUM;
3.2 其它
開發人員如果遇到上述表格中未列舉的類型,請書面通知相關管理人員,由管理人員集中更新列表內容,不得擅自啟用未經確定的新變數前綴。
4. 使用常量
4.1 使用常量
1. 常數很容易在數據輸入時出錯
常數存在的主要問題之一是你很容易在鍵入數字時出錯,從而顛倒了數字的位置。例如,當你鍵入數字10876時,很容易的鍵入10867或18076。與處理變數和保留字的方法不同,編譯器並不在乎顛倒了位置和不正確的數字,有時簡單的錯誤造成的問題不會立即表現出來,而當問題表現出來時,它們會以隨機的計算錯誤的形式出現,這些錯誤很難准確定位。用常量來取代常數時,編譯器將在編譯時檢查常量的有效性。如果常量不存在,編譯器便將這一情況通知你,並拒絕進行編譯,這可以消除錯誤鍵入的數字帶來的問題,只要常量擁有正確的值,使用該常量的所有代碼也有使用該正確值。
2. 常數很難不斷更新
3. 常量使代碼更容易閱讀
使用常量後,得到的一個額外好處是可使創建的代碼更容易閱讀。常數很不直觀。也許你對常數非常了解,但其他人則根本看不明白。通過合理的給常量命名,使用這些常量的代碼就變得比較直觀了,更容易閱讀。
為常量賦予較寬的作用域,這與使用變數時的情況不同。在一個應用程序中你決不應該兩次創建相同的常量。如果你發現自己復制了一個常量,請將原始的常量說明轉至較寬的作用域,直到該常量可供引用它的所有方法為止。
5. 變數
5.1 定義有焦點的變數
用於多個目的的變數稱為無焦點(多焦點)的變數。無焦點變數所代表的意義與程序的執行流程有關,當程序處於不同位置時,它所表示的意義是不固定的,這樣就給程序的可讀性和可維護性帶來了麻煩。
5.2 只對常用變數名和長變數名進行縮寫
如果需要對變數名進行縮寫時,一定要注意整個代碼中縮寫規則的一致性。例如,如果在代碼的某些區域中使用Cnt,而在另一些區域中又使用Count,就會給代碼增加不必要的復雜性。
變數名中盡量不要出現縮寫。
5.3 使用統一的量詞
通過在結尾處放置一個量詞,就可創建更加統一的變數,它們更容易理解,也更容易搜索。例如,請使用strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和strLastCustomer。
量詞列表:
量詞後綴 說明
First 一組變數中的第一個
Last 一組變數中的最後一個
Next 一組變數中的下一個變數
Prev 一組變數中的上一個
Cur 一組變數中的當前變數
5.4 使用肯定形式的布爾變數
給布爾變數命名時,始終都要使用變數的肯定形式,以減少其它開發人員在理解布爾變數所代表的意義時的難度。
5.5 為每個變數選擇最佳的數據類型
這樣即能減少對內存的需求量,加快代碼的執行速度,又會降低出錯的可能性。用於變數的數據類型可能會影響該變數進行計算所產生的結果。在這種情況下,編譯器不會產生運行期錯誤,它只是迫使該值符合數據類型的要求。這類問題極難查找。
5.6 盡量縮小變數的作用域
如果變數的作用域大於它應有的范圍,變數可繼續存在,並且在不再需要該變數後的很長時間內仍然佔用資源。
它們的主要問題是,任何類中的任何方法都能對它們進行修改,並且很難跟蹤究竟是何處進行修改的。
佔用資源是作用域涉及的一個重要問題。對變數來說,盡量縮小作用域將會對應用程序的可靠性產生巨大的影響。
8. 表達式和語句
8.1 每行應該只有一條語句。
8.2 if-else,if-elseif語句,任何情況下,都應該有「{」,「}」,格式如下:
if (condition) {
statements;
} else if (condition) {
statements;
} else{
statements;
}
8.3 for語句格式如下:
for (initialization; condition; update) {
statements;
}
如果語句為空:
for (initialization; condition; update) ;
8.4 while語句格式如下:
while (condition) {
statements;
}
如果語句為空:
while (condition);
8.5 do-while語句格式如下:
do {
statements;
} while (condition);
8.6 switch語句,每個switch里都應包含default子語句,格式如下:
switch (condition) {
case ABC:
statements;
/* falls through */
case DEF:
statements;
break;
case XYZ:
statements;
break;
default:
statements;
break;
}
8.7 try-catch語句格式如下:
try {
statements;
} catch (ExceptionClass e) {
statements;
} finally {
statements;
}
11. 可移植性
1. 盡量不要使用已經被標為不贊成使用的類或方法。
2. 如果需要換行的話,盡量用 println 來代替在字元串中使用"\n"。
3. 用separator()方法代替路徑中的」/」或」\」 。
4. 用pathSeptarator()方法代替路徑中的 」 : 」 或 」 ;」 。
㈥ 怎麼樣讓c++編譯器 不區分大小寫字母
原來在Unix下文件名符號名什麼的都是區分大小寫的。C是服務於Unix的工具,自然也是區分大小寫。後來出現了一個奇葩就是微軟的Dos,處處和Unix對著干。文件名不區分大小寫,Unix常用的路徑分割符正斜杠也變成了反斜杠... 當然後來的Windows以及微軟的VB都遵循這個哲學。
那麼當我們使用C和C++時就要回到Unix的哲學上來了。必須要大小寫敏感。
不過你實在不爽的話,也可以自己修改編譯器。gcc是開源的,可以任意修改。
㈦ 匯編語言是否區分大小寫
匯編語言的語句是不區分大小寫的,編譯軟體會自動識別這些語句,但是匯編程序中用戶定義的變數、標號等,將區分其大小寫,編程時要注意這些區別,以免出錯。比如:
ORG 0000H
Ljmp main
org 0030h
main:
mov TMOD,#01h
setb EA
...............
這是合法的,不會出錯,編譯器也能正確識別。
㈧ 關於編譯器識別文件後綴名的問題
是這樣
對.c文件採用C語法編譯,對.cpp文件採用C++的語法規則來編譯。