C中const静态结构对象的安全性

时间:2014-06-25 12:36:36

标签: c pointers struct static const

我是C编程的新手,我正在开展一些项目,我必须在不同的源文件之间共享大量信息。

在一个源文件中,我声明并初始化特定结构的变量,而在其他文件中,我需要使用指向该变量的指针,以访问其中的信息,但不能更改它。

  1. 此变量不能在我的代码中的任何其他位置更改。
  2. 这个变量不能是全局的,它必须是静态的。
  3. 代码:

    //file 1 :
    
    typedef struct {
        bool (*decodeParameters)(void* interface, uint8_t command, uint16_t parameters[]);
        bool value;
    } i_actuator_t;
    
    static const i_actuator_t iActuator = {
        decodeActuatorParameters,  //pointer to a function in the same file 1
        false
    };        //this variable has to be protected so it cannot be edited anywhere else , and it cannot be global .
    
    i_actuator_t* getActuatorInterface (void) = {
        return &iActuator;
    }
    

    并且在file 2中,我想做类似的事情:

    i_actuator_t* iActuatorPTR = getActuatorInterface();
    

    static const变量,这是正确的做法吗? 有更好的解决方案吗?

    感谢

1 个答案:

答案 0 :(得分:3)

您的函数返回的指针也应标记为const。那么使用此返回值的变量也应如此。