.h
#define LOC_PATH_CONF_STR get_best_conf()
const char *conf_str[] = {
"a.conf",
"b.conf",
"c.conf",
"d.conf",
"e.conf",
};
inline const char* get_best_conf() {
int length = sizeof(conf_str) / sizeof(conf_str[0]);
for(int i =0; i < length; i++) {
if (!access(conf_str[i], F_OK)) {
return conf_str[i];
}
}
return conf_str[length - 1];
}
.cpp
const char LOC_PATH_CONF[] = LOC_PATH_CONF_STR ;
編譯會報錯:
error: array initializer must be an initializer list or string literal
const char LOC_PATH_CONF[] = LOC_PATH_CONF_STR ;
^
這個LOC_PATH_CONF_STR的define該怎么寫?非常感謝!
uj5u.com熱心網友回復:
const char LOC_PATH_CONF[] = LOC_PATH_CONF_STR ///這句話錯誤,第一陣列必須要在編譯的時候確定大小,而你那個函式是只有在運行期間的才能知道回傳值多大uj5u.com熱心網友回復:
直接用vector<string>似乎更好些uj5u.com熱心網友回復:
另外陣列 是只讀的只能初始化而不能賦值所以
T array[]=一個函式的方式行不通
uj5u.com熱心網友回復:
字符陣列只有在初始化的時候才可以出現在等號左邊,初始化是編譯期術語,
編譯期,離運行還早著呢,沒法處理執行陳述句/函式。
所以初始化資料只能是常量/常量運算式/常量串列/字串字面量
這種不需要運行的東東。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/269367.html
標籤:C++ 語言
上一篇:這個怎么寫?
下一篇:c語言用if怎么寫
