簡體   English   中英

頭文件中的靜態const std :: string

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM