c语言防止优化

作者&投稿:茅潘 (若有异议请与网页底部的电邮联系)
C语言编程解决最优化问题~

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

以下内容摘自李亚锋先生的《经典C面试真题精讲》
1.结构体设计为成员最长类型长度的整数倍;
2.减少函数参数的个数,不需要返回值的函数定义为void类型;
3.if...else....多条件分支语句中,把出现频率高的条件放在前面;
4.同时声明多个相同类型变量优于分别单独声明变量;
5.减少定义全局变量;
6.使用#define定义常量和小的函数实现;
7.有些情况嵌套汇编语句效率更高;
8.占用大的存储空间可以减少执行时间,同理时间也可以换取空间;
9提高程序算法效率;

编译器编译命令里有设置选项,通过设置,你可以要求 不优化,也可以要求用哪种优化。
具体选项有哪些,要查自己编译器的帮助文件。
例如,MS VC++ 6.0 编译器编
优化选项:
/O1:优化使产生的可执行代码最小
/O2:优化使产生的可执行代码速度最快
/Oa:指示编译器程序里没有使用别名,可以提高程序的执行速度
/Ob:控制内联(inline)函数的展开
/Od:禁止代码优化
/Og:使用全局优化
/Oi:用内部函数去代替程序里的函数调用,可以使程序运行的更快,但程序的长度变长
/Op:提高浮点数比较运算的一致性
/Os:产生尽可能小的可执行代码
/Ot:产生尽可能块的可执行代码
/Ow:指示编译器在函数体内部没有使用别名
/Ox:组合了几个优化开关,达到尽可能多的优化
/Oy:阻止调用堆栈里创建帧指针

/O2 为了加速,会优化掉。 选 /Od 不优化。

你可以用变量试试。

int i=0;
int n=10000;
while(i<n) i++;


c语言8个实用方法代码优化
C语言8个实用方法代码优化 1、选择合适的算法和数据结构 选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语包莫有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,...

如何优化语言活动的有效提问培训心得
在<<纲要>>中,关于语言领域提出的问题是:提出语言交往积极性,发展语言能力。提问在教育教学中起着至关重要的作用。陶行知先生说得好:“发明千千万,起点在一问。”这充分说明提问的重要意义。如何优化语言教育活动中的提问,激发孩子的求知欲望,应该遵循以下几点:一、提问应具有导思性 优化语言教育...

申论考试怎么优化语言?
申论技巧:语言优化 一、展开联想、多使用比喻、拟人等修辞手法 文章中多使用修辞手法,既能增添文章的色彩,也能突出对文字的驾驭能力。每篇评论员文章中都可以找到修辞手法的运用,这就需要准备个素材本,多摘抄、多积累。比如,青年人该如何树立梦想?结合现实,展开联想。可以将青年的梦想比作是种子,将...

浅谈如何通过优化课堂语言来提高数学课堂的有效性
因此在数学教学中,教师必须根据学生的知识基础和心理特征,将数学语言转化为容易被学生所接受的语言。然而很多高中数学教师对数学教学语言的重视不够,对于课堂语言准备的不够充分,以至于在教学中不能很好地达到教学效果。那么,在数学教学中我们该如何优化课堂语言,提高数学课堂的有效性呢?下面是笔者近几...

怎么利用动画片优化宝宝语言教育?
我们可以看到语言教育和动画是完美的。动画可以促进儿童声音和词汇的发展。方法:父母和孩子共同选择合适的纸箱,在制定具体计划和目标的同时,采用“识别细节的方法”。讨论和分析了儿童电影在母语教育中的作用,并提出了一些利用卡通优化母语教育的措施,以期有效提高学前教育水平,为儿童的良好成长搭建平台。

如何优化小学语文课堂教学语言
1、唤起生活体验 激发兴趣 教师的语言在很大程度上决定着学生学习的效果.形象的语言,能将“死”知识变为学生易于理解的“活”知识;具有情感的语言,能感染学生,陶冶学生的情操;生动的语言,能吸引学生,振奋学生的精神,让学生听了便“如临其境、如见其人、如闻其声”,使教材化难为易,使学生得到美的...

系统优化辅助工具是什么语言开发的
1. C\/C++:C\/C++是一种高效的编程语言,适合开发底层系统工具和性能敏感的应用程序。它提供了对硬件的底层访问能力,可以直接操作内存和硬件资源,因此在开发系统优化工具时,使用C\/C++可以实现更高的性能和效率。2. Python:Python是一种简洁易读的高级编程语言,具有丰富的第三方库和工具。Python在开发...

易语言 有关程序优化的问题,如降低CPU利用率,解决假死,提高运行速度...
用多线程 启动线程()目前判断应该只能用多线程 因为你应该用了别人的模块,模块你修改不了,启动线程() 这个简单吧,不用教了把

如何优化幼儿园语言教学活动
好听的故事就出来、分析教材要透: “老师。进一步提升幼儿语言的运用能力如何开展幼儿园语言教学活动 语言是人们进行交流和沟通的工具。提问不能过于模式化,从此就会了断了孩子语言学习的兴趣与愿望。教师的多次重复。在幼儿园教学中创设适宜的环境氛围,让孩子听懂作品,不会 再对我说、有机会说并能得到...

如何优化语言区域活动的开展
依据皮亚杰的“知识是在主体与客体之间的相互作用中发生的”以及周兢教授和余珍有博士在《幼儿园语言教育》中提出的“幼儿语言教育的活动观具体体现在教育过程之中,要求教师更多地提供充分操作语言的机会,鼓励儿童以多种方式操作语言和发展儿童在操作语言过程中的主动性”等理论,借鉴蒙台梭利的语言教育,针对幼儿的现有语言...

台前县19727135786: c语言防止优化 -
芝京瑞培: 编译器编译命令里有设置选项,通过设置,你可以要求 不优化,也可以要求用哪种优化. 具体选项有哪些,要查自己编译器的帮助文件. 例如,MS VC++ 6.0 编译器编 优化选项: /O1:优化使产生的可执行代码最小 /O2:优化使产生的可执行...

台前县19727135786: 怎么指定某段代码不被编译器优化掉 -
芝京瑞培: 在C语言中, 某些语句,如: int a; a = 0; a = 1; a =2; 这个可能编译器会把前面两句给优惠掉, 这个如果 前面两句也是必须要执行的, 可以把 int a 改成 volatile int a. 在编译的时候, 编译器可能会预测到某个变量的值, 就把中间的没有必要的语句给优化掉,volatile 关键字就是告诉编译器,不要做这样的预测性优化, 按照文本代码来翻译.

台前县19727135786: 如何防止因编译器开启优化,而导致程序执行错误 -
芝京瑞培: 我的经验是:未优化的c程序可正常运行,优化后不能运行,那一定是我的程序有问题.我还没经历过不是我程序的情况.发现这种不易发现的问题,需要看汇编码.避免的方法,我的经验:写c程序,尽量规矩;似是而非的概念,一定要搞清楚,别侥幸.因为侥幸而留的雷,现在不出问题,将来一定会出问题;不优化不出问题,优化就出问题.最后要说,每个应用程序,都让他开优化运行,只要时间允许,一定要查出开优化后出问题的原因.时间不允许,只能不开优化凑合着,在有时间的时候继续查问题.

台前县19727135786: c语言:#define inport(addr) (*(volatile U32 *)(addr)) 一句是定义什么,其中inport(addr)是一个函数吗
芝京瑞培: inport(addr)不是函数,就是定义的型如inport(addr)的宏,每次用来取得addr指向U32地址中的内容.volatile是防止编译器优化,让编译器每次都重新读取addr的地址值.

台前县19727135786: 如何防止Vc 6把代码优化掉 -
芝京瑞培: 在变量定义前加volatitle即可,这是防优化的.

台前县19727135786: C语言中while语句问题 -
芝京瑞培: 申明为易变的变量 volatile int i; 防止编译器优化试试

台前县19727135786: 关于ARM寄存器在C语言中宏定义的问题 -
芝京瑞培: PORTA应该要定义的吧,可能以前你只看c文件,头文件没注意吧.嵌入式系统编程,要求程序员能够利用C语言访问固定的内存地址.不进行宏定义的话就得每次用的时候用地址了,那多麻烦.关于这个定义,可以看下面讲解..既然是个地...

台前县19727135786: C语言编程解决最优化问题 -
芝京瑞培: 数学计算优化原则: 1.整型数 / Integers 在我们知道使用的数不可能是负数的时候,应该使用unsigned int取代int,一些处理器处理整数算数运算的时候unsigned int比int快,于是,在一个紧致的循环里面定义一个整型变量,最好这样写代码: ...

台前县19727135786: 关于C语言中用#define和sfr定义ARM寄存器的问题 -
芝京瑞培: 我给你解释几点:1:0X56000010 这个值是GPBCON这个寄存器在ARM地址空间的物理地址,(unsigned long *)0x56000010 是将这个地址强制转换成unsigned long *类型的指针,再在这个指针前加*号是解引用,取这个地址里的值,这完全符...

台前县19727135786: 什么叫代码优化?为什么要优化? -
芝京瑞培: C语言属于编译语言,也就是你编写的程序,要经过编译形成目标代码,具体的处理器才能执行这个程序. C语言的编译器有多种算法,如代码长度最小、代码执行时间最短等等.你在开发环境中不对代码优化进行设置,那就是默认等级,或者叫无优化. 优化的目的是给用户一个选择,比如你的程序存储器只有8K,可是编译出来的代码是9K,那你是没法烧录运行的,装不下.这时你按代码长度最小优化一下,也许就可以了. 不优化没什么问题,大不了程序大一点,优化级别越高,出问题的可能性越大.因为编译软件只有一个,程序员千千万,优化难免有BUG.原则:能不优化就不优化,需要优化先自己想办法,实在不行才借助编译软件优化,但要详细测试.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网