2011-04-28 90 views
1

這似乎是一個相當愚蠢的問題,但我對我寫在我聲明瞭一些字符串常量庫中的頭文件:如果庫使用它們,應該在哪裏聲明庫#defines?

#define CONST1 "Hello, World!" 
#define CONST2 "Foo Bar" 
// etc 

庫的源利用這些常數,因此我需要包括源代碼中的頭文件:

#include <header.h> 
void func() { 
    printf("%s\n", CONST1); 
} 

這導致最終用戶不需要爲包括他們使用的庫編寫任何源的頭文件。這是最佳做法還是有其他選擇?

回答

3

是的,這是傳統的方法。爲了清楚起見,我會建議你在預處理器符號前面添加一些內容,使它們不太可能與用戶應用程序代碼或其他庫相沖突。

我不看你怎麼個意思與用戶代碼需要包括你的頭,雖然...因爲這些都是預處理器符號,則需要與定義的頭,如果符號是用戶感興趣的程序。

如果這些字符串只用於裏面的您的庫實現,那麼您可以將它們移動到私有頭部以減少混淆。

+0

謝謝。這些字符串主要用於圖書館,儘管它們也可以在外部使用。我會考慮爲他們使用一個單獨的標題。 – BWHazel 2011-05-03 15:59:59