1.如果一個(gè)函數(shù)僅僅被同一個(gè)源文件中的其他函數(shù)調(diào)用,我們就應(yīng)該聲明該函數(shù)為static
2.extern int n;
在兩外一個(gè)文件中: long n;
這是一個(gè)無(wú)效的程序,因?yàn)橥粋€(gè)外部變量名在兩個(gè)不同的文件中被聲明為不同的類型。然后大多數(shù)c語(yǔ)言實(shí)現(xiàn)不能檢測(cè)出這種錯(cuò)誤。
3.一個(gè)程序由多個(gè)模塊組成,每個(gè)模塊都需要知道一個(gè)特定的文件名。我們希望能夠做到只在一處改動(dòng)這個(gè)文件名,所有模塊中的文件名就能同時(shí)得到更新。
可以,先創(chuàng)建一個(gè)文件,叫做file.h,它包含了聲明extern char filename[];
需要用到外部對(duì)象filename的每個(gè)c源文件都應(yīng)該加上: #include "file.h";
最后選擇一個(gè)C源文件,在其中給出filename的初始值。如在file.c中
#include "file.h";
char filename[]="/etc/passwd";
這樣就保證了filename的類型是正確的。解決了2中的問題。