百科问答小站 logo
百科问答小站 font logo



编译器是如何实现C/C++中的const的功能? 第1页

  

user avatar   zhang-hao-72 网友的相关建议: 
      

各不相同吧,比如arm-none-eabi-gcc会把const数据放进.text段, 不加const进.data段。前者只占目标器件的flash空间,后者要同时占用flash和ram空间,由启动代码从flash复制到ram。既然放在flash空间,写操作自然无效了。

但是avr-gcc则不管加不加const都一样只会放在.data,加了const只能起到对const变量写入时编译警告/报错的作用。如果要做到和上面一样的效果,需要加专门的关键字PROGMEM,并且读操作也要改用专门的api实现。

至于题主这个,应该是操作系统实现的。当年的dos没有这个限制,ram都是可写的,有空了试试纯dos下对const变量能否写入。




  

相关话题

  当下软件开发语言腾出不穷,作为老牌c++GUI领域top1的QT未来会怎样? 
  相比其他语言,C、C++究竟快在哪里? 
  有哪些值得学习的国内 c++ 开源项目? 
  C++对比其他语言到底难在哪里?有人对C++异常推崇,除了性能优势,还有什么优点,怎么学好C++? 
  C++中delete this是对象先析构还是delete语句先返回? 
  大一新生做C语言课设被强制要求使用 Borland C++ 3.1,此IDE相对于其他IDE有何优点? 
  C++在构造函数内new对象的最佳实践是什么? 
  怎样理解C++中“如果属性有在堆区开辟的,一定要自己提供拷贝构造函数,防止浅拷贝带来的问题”? 
  intel x86指令编码存在多个选择时如何选定opcode? 
  Mac系统下有什么适合图形学的C++IDE?Clion还是VS? 

前一个讨论
《三国志周瑜传》是真的要拍了吗,这是谣言吗?如果这是真的拍了可能会造成什么负面影响?(下面有图)?
下一个讨论
C语言开发单片机为什么大多数都采用全局变量的形式?





© 2025-06-24 - tinynew.org. All Rights Reserved.
© 2025-06-24 - tinynew.org. 保留所有权利