2011-09-24 84 views
0

大多數人似乎申報代碼塊之外的功能目前正使用它們像這樣:函數聲明範圍

void doSomething(); 

void doStuff() 
{ 
    doSomething(); 
} 

,如果它被認爲是一個很好的習慣,這樣做,而不是像這樣我想知道:

void doStuff() 
{ 
    void doSomething(); 

    doSomething(); 
} 

第二種方法的範圍較小,這通常被認爲是很好的風格,但爲什麼幾乎沒有人使用它?有一些缺點嗎?

回答

1

由於函數必須在封閉的命名空間範圍中定義,因此在將聲明限制在函數作用域中似乎沒有太大優勢。

傳統上,在頭文件中使用單個聲明更容易維護,因爲如果函數定義需要更改,則只需調整一個聲明,而不是使用函數的其他函數中的聲明。

1

如果doSomething()僅用於此c文件中,則應聲明爲static。

static void doSomething(); 

在文件的開頭聲明所有靜態函數原型而不是在示例中的代碼行中,這是一個很好的實踐。

這樣,如果有人正在瀏覽代碼並查看所有靜態函數原型,他可以快速瞭解發生了什麼。