这就是我想要做的:
1)我想要一个实例化数据结构的函数。
void instantiateCDB(void);
2)我还想要一个函数来更新实例化的数据结构并返回一个指向数据结构的 const 指针(使其成为只读)
我知道这可以在 C++/Java 中完成。但它也可以在 C 中完成吗?
我要写的程序流程是:
main(){
instantiateCDB(); // Allocates a CDB
const struct canDataBlock * cdb = getUpdateSystem();
}
// But the best function definitions that I can come up with is this.
struct canDataBlock * instantiateCDB() {
static struct canDataBlock cdb = {0};
return &cdb;
}
const struct canDataBlock * getUpdateSystem() {
struct canDataBlock * cdb = instantiateCDB();
return &cdb;
}
instantiateCDB
问题是:如果函数中实例化的写/读访问被声明为无效,我如何访问该数据结构?如果我要返回分配的数据结构,用户可以更改canDataBlock
从而失去其完整性。我想要发生的只是getUpdateSystem()
可以更改函数实例化的数据结构的值instantiateCDB()
。我该如何解决这个问题?C 中是否有另一种我不知道的技术。有的话请教我。:)