2017-02-19 73 views
1

我有一個程序使用參數數據(車輛數據,如傳輸速率,重量等)的常數結構。C - 設置返回變量爲const

由於該程序將用於不同的車型,我想通過調用一個函數來讀取txt文件中的參數數據,該函數將結構作爲返回值進行反饋。

是否有可能在我的主程序中聲明結構爲'const'?我想這樣做是爲了保證這些結構在進展中不會發生變化。

更多信息:在代碼的基礎應用中,參數數據是硬編碼的。因此現在使用常量結構。

+0

是的,它是可能的。你可以將它們定義爲'const',並用分析該文件的函數的返回值對它們進行初始化。在優化額外的副本時應該省略。 – StoryTeller

+0

@StoryTeller在C?你確定? C'const'的限制性很強,因爲它只允許在其初始化表達式中使用常量表達式和字符串常量,所以我認爲這不會起作用。在C++中是的,但在C中沒有。 – Downvoter

+0

感謝您的及時答覆! 那麼,如果沒有,是否有另一種方法可以保證對結構沒有改變? –

回答

0

是的,你可以用一個函數的返回值來初始化一個const。但是你不能把返回值賦給一個const。

例子:

#include <stdio.h> 

int foo() 
{ 
    return 42; 
} 

int main(void) { 
    const int g = foo(); // OK for initializing a const 
    printf("%d\n", g); 
    // g = foo();; <-- will cause compile error : assignment of read-only variable ‘g’ 
    return 0; 
}