我总是忘记将“静态”前缀添加到我的变量和函数中,因此GCC将它们标记为extern。是否可以更改此行为,以便默认情况下将所有内容标记为静态。这两种类型在运行时是否存在性能差异,还是更形式化?将默认值从Extern更改为静态
0
A
回答
5
1
首先:extern
修饰符是不是默认。该限定符表示提到的项目将在另一个编译单元中定义,因此它仅适用于声明全局变量之类的内容。
没有办法使static
修饰符成为默认值,因为没有dynamic
修饰符可以取消这个默认值。因此,没有办法用适当的默认值编写工作代码:每个函数和变量都是static
,这会导致编译器生成一个空的输出文件!
这两种类型在运行时是否存在性能差异,还是更形式化?
编译器可以对static
函数和变量执行一些优化,而这些函数和变量不能在动态函数上执行。特别是,从未引用的函数和变量可能会完全丢弃,并且static
函数可以更积极地内联。
相关问题
- 1. FTDI将PID更改为默认值
- 2. 将tinyint默认值更改为1 mysql
- 3. 静态Qtime默认值
- 4. 默认值为静态布尔变量
- 5. 将静态URL更改为动态 - NodeJS
- 6. extern但静态int?
- 7. 与EXTERN静态表
- 8. jqgrid更改默认值
- 9. 更改列的默认值
- 10. JQDateRangeSlider更改默认值
- 11. 递归值默认更改
- 12. sqlite3更改列默认值
- 13. 更改EnableViewState的默认值
- 14. Java非静态字段默认值?
- 15. Rails迁移 - 非静态默认值
- 16. 将状态栏更改为“Light”后,将状态栏更改回默认值每个视图控制器方案
- 17. 将模型中的值更改为默认值
- 18. 如何将轴的默认值更改为用户值
- 19. 如何将文件的默认值更改为另一个值?
- 20. 是否可以将$ profile的默认值更改为新值?
- 21. 将mysql默认引擎更改为innodb
- 22. CAKEPHP - 将默认路径更改为webroot
- 23. 将默认终端shell更改为root
- 24. 将UIWebView默认颜色更改为UIImage
- 25. Crystal 2008 - 为静态值提供参数的默认值
- 26. Java - 静态初始化与静态变量的默认值
- 27. 如何将dropdownlist更新为默认值
- 28. 将列更新为默认值mysql
- 29. 更改默认行为5.4
- 30. 更改System.Dynamic.ExpandoObject默认行为
您可能需要从编译后的代码中转储符号,以查看是否有任何您已经忘记的静态代码。试试'nm','objdump'和其他类似的工具。 –