gpt4 book ai didi

我可以将 const 限定符应用于选择性函数的全局变量吗?

转载 作者:太空宇宙 更新时间:2023-11-04 03:44:10 24 4
gpt4 key购买 nike

考虑以下源文件:

#include <stdio.h>

int g_var_1;
int g_var_2;
// ...

void f1(void);
void f2(void);
// ...

int main(void)
{
f1();
f2();

return 0;
}

void f1(void)
{
// set the value of g_var_1
g_var_1 = 100;
}

void f2(void)
{
// read the value of g_var_1
printf("%d\n", g_var_1);
}

// ...

是否可以为某些函数(在同一翻译单元内)“应用 promise ”g_var_1 应被视为它们的只读全局变量?我试过类似的东西:

void f2(void)
{
extern const int g_var_1;

// read the value of g_var_1
printf("%d\n", g_var_1);
}

但这会产生:

error: conflicting type qualifiers for ‘g_var_1’ extern const int g_var_1;

本质上,我想限制在更复杂的代码中意外修改全局变量的可能性(real 的值在编译时已知),仍然没有将它们“ Hook ”为函数的参数,例如作为:

void f2(const int g_some)
{
printf("%d\n", g_some);
}

最佳答案

做到这一点的适当方法是将您的代码分成模块,并将这些全局变量定义为静态的,这将使它们仅在模块中可见,并且不会将它们的符号导出到外部。然后,您可以添加一个 getter 函数来公开它们的值,而不会将它们公开给来自模块外部的修改。

关于我可以将 const 限定符应用于选择性函数的全局变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26208260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com