码迷,mamicode.com
首页 > 其他好文 > 详细

gcc参数记录(一)

时间:2020-05-26 12:23:12      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:return   cli   code   定义   view   处理   默认   release   sse   

本文记录一些gcc相关参数,便于个人记忆,持续更新。

NDEBUG 

头文件assert.h定义的宏受NDEBUG的影响。如果预程序在处理这个头文件时已经定义了NDEBUG,assert宏的内容就定义为空,这意味着assert宏不起作用。

所以,可以在最终发布程序的时候可以用-DNDEBUG关闭断言功能或者把#define NDEBUG加每个源文件中,但这条语句必须放在#include <assert.h>之前。

技术图片
 1 #include <stdio.h>
 2 
 3 #definne NDEBUG
 4 #include <assert.h>
 5 
 6 int main()
 7 {
 8   int x = 0;
 9   assert(x);
10   printf("%d\n",x);
11   return 0;
12 }
View Code

 

trace(),assert()都只是在DEBUG模式下才起作用的,如果定义了NDEBUG,编译器会以为是非DEBUG的模式(虽然编译出来的程序还是很大),而且还可以进行调试,此时trace(),assert()就没有用了。就如同你编译成release版的时候这些没有用一样。

 

#define DEBUG 会重新打开调试开关

NDEBUG宏由于字面意思,也被用于作为判断debug/release版本的宏,不过这个是编译器、环境相关的,并不可靠。比如vc中,对生成的release版本项目,默认定义这个宏,而gcc并没有定义,得用-DNDEBUG参数来定义。

gcc参数记录(一)

标签:return   cli   code   定义   view   处理   默认   release   sse   

原文地址:https://www.cnblogs.com/tiny1987/p/12964572.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!