2017-02-19 60 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; 
}