新手入门
- 积分
- 14
- 金钱
- 14
- 注册时间
- 2016-11-2
- 在线时间
- 2 小时
|
1金钱
本帖最后由 绽放之灵 于 2016-11-7 16:43 编辑
本人现在正在用C++开发stm32。用了C++开发stm32才发现把外设写成类,常用的功能写成类的public方法使用起来是多么方便!
很自然想用string来打印log,现在问题来了,为什么一用string就会跑飞!
用前人的代码举例!Pony279的帖子 @Pony279
将main函数改为如下代码:
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::string;
void delay()
{
unsigned int t = 1000000;
while(t--);
}
int main(void)
{
string str1 = "hello world! \n";
while(1)
{
//cout<<"hello world! \n"<<endl;
cout<<str1<<endl;
delay();
}
}
保持优化等级为level 3, 代码能正常运行。
然而,将优化等级调为0时,程序一运行就会进硬件中断。即将设置调为:
程序一运行就会进HardFault!
现在的情况是,我需要在一个成熟的软件框架上加入string的功能,但是不能改设个框架的工程设置!
该框架这里的设置规定了优化等级必须为level 0! 这是个棘手的问题,需要理解里面的原理!
在此请教群里各位高手:
1、要怎样才能在优化等级为level 0的情况下加入#include<string>功能?
2、优化的深层次原理是什么?为什么不开优化就会跑飞?
3、基于这个原理,能搞出什么黑科技?!
|
|