const static int foo = 42;
Run Code Online (Sandbox Code Playgroud)
我在StackOverflow上的一些代码中看到了这个,我无法弄清楚它是做什么的.然后我在其他论坛上看到了一些困惑的答案.我最好的猜测是它在C中用来隐藏foo其他模块的常量.它是否正确?如果是这样,为什么有人会在C++上下文中使用它,你可以做到这一点private?
我遇到了别人写的一段代码.在头文件中声明为静态的几个全局函数.函数本身在单独的实现文件中定义.AFAIK,静态函数定义在定义函数的转换单元外部不可见.如果是这样,在头文件中声明静态函数有什么意义?
// in some header file
static void foo();
// in some implementation file
static void foo()
{
....
....
}
Run Code Online (Sandbox Code Playgroud) 我有一个C项目,其中所有代码都组织在*.c/ *.h文件对中,我需要在一个文件中定义一个常量值,但也可以在其他文件中使用.我该如何声明和定义这个值?
它应该static const ...在*.h文件中吗?如extern const ...在*.h文件中并在*.c文件中定义?以何种方式,没关系吧的价值是不是原始数据类型(int,double,等),但char *还是struct?(虽然在我的情况下是一个double.)
在*.h文件中定义内容通常不是一个好主意; 一个人应该在*.h文件中声明事物,但在*.c文件中定义它们.但是,这种extern const ...方法似乎效率低下,因为编译器无法内联该值,而是必须始终通过其地址进行访问.
我想这个问题的实质是:是否应该在C static const ...中的*.h文件中定义值,以便在更多的位置使用它们?