2010-09-13 11 views
4

我有以下文件:a.h,a.c,b1.c,b2.c和在b1和b2我都有一些宏定義是相同的。正確的C重構

如果我在a.h中移動它們,還是將它們保留在正在使用的文件中更常見?在C中使用正確的方法是哪種方式?

回答

8

通常會將文件間共享的宏定義移動到這兩個文件都包含的標題中。你應該確保你將該定義移動到的文件是一個合理的文件;不要將它移動到完全不相關的頭部,因爲它包含在兩個文件中。如果b1.cb2.c都沒有邏輯相關的頭文件,也許你應該創建一個b.h在它們之間共享。

1

我想說,如果宏包含在兩個代碼文件中,將宏移動到a.h是沒有問題的,前提是所有文件都包含a.h。

1

無論漂浮你的船。

如果a.h與這個宏有任何關係,那麼這是個好地方。如果它被放在那裏「,只是因爲」a.h恰好已經包含在b1.c和b2.c中,這不是一個真正的設計問題,而是一個「方便」的問題。可以說這比複製它更好,但理想情況下,如果它與ah無關,也許你可以把它放在bh中(因爲它涉及到b)或handymacros.h(因爲它不是真的具體,但不會發生使用它) 。

1

如果宏定義不會在有價值的命名空間上跺腳,請將它們粘貼到最合適的標頭中。如果這是一個h,就去做吧。這聽起來像是更可能是b.h.

1

如果b1和b2實際上是指相同的東西(如果您更改了一個,則必須在另一箇中更改它),那麼標題是放置這些定義的適當位置。那麼你只需要在一個地方改變它,並且不會意外忘記一個地方去改變它。