宏定义在C系开发中可以说占有举足轻重的作用。底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行。而在更高层级进行开发时,我们会将更多的重心放在业务逻辑上,似乎对宏的使用和依赖并不多。但是使用宏定义的好处是不言自明的,在节省工作量的同时,代码可...
                            
                            
                                分类:
移动开发   时间:
2015-08-21 13:26:35   
                                阅读次数:
327
                             
                         
                    
                        
                            
                            
                                今天趁空闲时间看了点线程方面的知识首先看的是volatile关键字,按照我之前书上看到的一点知识,自己的理解是,volatile关键字会阻止编译优化,因为cpu每次读取数据是并不是从高速缓存中读取,而是取内存中的数据。这是自己的一点简单的理解,可能有错误。我之前只是看了点线程方面的知识,只是在自己写...
                            
                            
                                分类:
编程语言   时间:
2015-08-10 19:43:51   
                                阅读次数:
131
                             
                         
                    
                        
                            
                            
                                关键字篇volatile关键字鲜为人知的关键字之一volatile,表示变量是'易变的',之所以会有这个关键字,主要是消除编译优化带来的一些问题,看下面的代码1 int a = 8;2 int b = a;3 int c = a;编译器认为,上面的第2句代码与第三句代码之间,没有存在对a赋值的语句,...
                            
                            
                                分类:
编程语言   时间:
2015-08-02 15:05:36   
                                阅读次数:
117
                             
                         
                    
                        
                            
                            
                                一、避免在循环条件中使用复杂表达式在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。例子:import java.util.vector;class cel { void method (vector vector) { ...
                            
                            
                                分类:
编程语言   时间:
2015-06-26 12:18:17   
                                阅读次数:
109
                             
                         
                    
                        
                            
                            
                                在使用gdb进行调试的时候,依赖于g++的编译结果,因为在编译时默认使用了优化,所以导致没按代码顺序执行,其实只需要将g++的编译优化关掉就可以了。
 gdb调试程序的时候打印变量值会出现 情况,可以在gcc编译的时候加上 -O0参数项,意思是不进行编译优化,调试的时候就会顺畅了,运行流程不会跳来跳去的,发布项目的时候记得不要在使用
 -O0参数项,gcc 默认编译或加上-O2优化编译会提高程...
                            
                            
                                分类:
数据库   时间:
2015-06-09 11:53:10   
                                阅读次数:
373
                             
                         
                    
                        
                            
                            
                                linux环境下的编译器gcc
gcc:
      -o               编译链接生成可执行文件
      -O  -O1 -O2 -O3  编译优化
      -g  -g1 -g2 -g3 产生调试信息至可执行文件
      -w  关闭所有的警告
      -W  all,error     -Wall显示所有的警告 -Werror把所有的警告当错误
...
                            
                            
                                分类:
系统相关   时间:
2015-05-11 09:04:09   
                                阅读次数:
188
                             
                         
                    
                        
                            
                            
                                Project Property Sheet的意思是项目属性表,在大型项目中基本上都会使用。一般来说,在一个大型项目中,对于每个工程来说,很多属性设置是完全相同的,譬如公共头文件路径,公共通用函数/库,公共静态链接库,相同的编译优化选项等等,很多。而工程数目可能上则十数个,多则上百个,一个个的去配置工程属性,工作量大不说,还很容易配错,而使用项目属性表则可以明显减少工程的错误设置,明显减少工程的重复设置,显著降低程序员的工作量(虽然很多地方是项目经理统一配置的),本文主要讲述项目属性表的使用方法。...
                            
                            
                                分类:
其他好文   时间:
2015-05-03 23:44:43   
                                阅读次数:
189
                             
                         
                    
                        
                            
                            
                                调试程序时,在gdb内p var,会提示
No symbol "var" in current context.
即使没有使用任何编译优化选项,仍然不能查看,放狗搜了一下,可能是这些变量被优化到寄存器中,gdb无法读取。
解决方案:
在编译是加入 ‘-gstabs+’  选项,比如:
g++ -g -Wall  -gstabs+ -o main.o main.cpp
...
                            
                            
                                分类:
数据库   时间:
2015-04-15 19:45:05   
                                阅读次数:
120
                             
                         
                    
                        
                            
                            
                                volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。例如:volatile ...
                            
                            
                                分类:
其他好文   时间:
2015-04-09 17:20:20   
                                阅读次数:
103
                             
                         
                    
                        
                            
                            
                                这篇是网易云课堂《Linux内核分析》这门课的作业这周的作业是用GDB调试系统调用。我断点倒是能打上,但是单步执行的时候总是乱跳,而且变量值也查不到,都是optimized out。查了下好像是因为编译优化的问题。目前我也没有什么好办法。不管了先把实验截图和流程图发上来。
                            
                            
                                分类:
其他好文   时间:
2015-04-05 13:14:07   
                                阅读次数:
165