当前位置:  开发笔记 > 编程语言 > 正文

在C中定义const值

如何解决《在C中定义const值》经验,为你挑选了1个好方法。

我有一个C项目,其中所有代码都组织在*.c/ *.h文件对中,我需要在一个文件中定义一个常量值,但也可以在其他文件中使用.我该如何声明和定义这个值?

它应该static const ...*.h文件中吗?如extern const ...*.h文件中并在*.c文件中定义?以何种方式,没关系吧的价值是不是原始数据类型(int,double,等),但char *还是struct?(虽然在我的情况下是一个double.)

*.h文件中定义内容通常不是一个好主意; 一个人应该在*.h文件中声明事物,但在*.c文件中定义它们.但是,这种extern const ...方法似乎效率低下,因为编译器无法内联该值,而是必须始终通过其地址进行访问.

我想这个问题的实质是:是否应该在C static const ...中的*.h文件中定义值,以便在更多的位置使用它们?



1> paxdiablo..:

我遵循的规则是仅在H文件中声明事物并在C文件中定义它们.您可以在单个C文件中声明和定义,假设它只在该文件中使用.

通过声明,我的意思是通知编译器它的存在,但不为它分配空间.这包括#define,typedef,extern int x,等等.

定义为声明赋值并为它们分配空间,例如int xconst int x.这包括函数定义; 包含这些在头文件中经常导致浪费的代码空间.

我看到太多初级程序员const int x = 7;在输入头文件时会感到困惑,然后想知道为什么他们因为x多次定义而得到链接错误.我认为,至少你需要static const int x这样才能避免这个问题.

我不会太担心代码的速度.计算机的主要问题(在速度和成本方面)很久以前从执行速度转向易于开发.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有