[英]static const std::string in header file
在我的CMake構建系統中,我自動生成一個頭文件。 以前,我在做這樣的事情
// old_auto_gen_file.hpp
#define VERSION_STRING "@VERSION_STRING@"
#define VERSION_MAJOR @VERSION_MAJOR@
@...@
是通過CMake填寫的。
如果可能,我想丟失#define
。 我在想這樣的事情
// new_auto_gen_file.hpp
static const std::string VERSION_STRING("@VERSION_STRING@");
static const int VERSION_MAJOR(@VERSION_MAJOR@);
但是,我對這是否合法感到非常困惑? c ++ 11很棒嗎?
這樣做沒有什么問題,除了我什至看不到任何理由去打擾std::string
的小開銷。 一個簡單的char
數組就足夠了:
static const char VERSION_STRING[]="@VERSION_STRING@";
static const int VERSION_MAJOR=@VERSION_MAJOR@;
根據您的工具鏈,您可能會獲得const的多個實例,否則鏈接器可能足夠聰明以執行“合並字符串”。
無論哪種方式,這都不會對您的代碼產生可見影響。 但是我建議將字符串放在ac / cpp文件中,並在標頭中添加外部引用,這是副作用,您只需要在更改時重新編譯一個小文件即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.