#includeintmain(intargc,char*argv[]){#ifdefDEBUGprintf("DEBUG is definded \n");#elseprintf("DEBUG is not definded \n");#endif} 2. Makefile文件为: DEBUG= CFLAG= -g debug: DEBUG.c gcc $(DEBUG) $(CFLAG) -o$@$^ 3. 输入:gcc -g -o debugtest.c ./debug out: DEBUG is not ...
它与#if、#elif、#else结合使用来判断宏是否被定义,乍一看好像它显得多余, 因为已经有了#ifdef和#ifndef。defined可用于在一条判断语句中声明多个判别条件;#ifdef和#ifndef则仅支持判断一个宏是否定义。 #if defined(VAX) && defined(UNIX) && !defined(DEBUG) 和#if、#elif、#else不同,#ifdef、#ifndef、defi...
3. 输入: gcc -g -o debug test .c ./debug out: DEBUG is not definded 4. 输入: gcc -DDEBUG -g -o debug test .c ./debug out: DEBUG is definded 这样DEBUG版本和 release版本都有了. GCC生成32位版与64位版、debug版与release版 本文介绍了如何利用makefile条件编译来生成(64/32bit、debug...
GCC编译时增加宏定义-D,相当于#define ,可以在遇到条件编译时执行。 #ifdef //条件编译内容 #endif 例子: 搭配gcc编译命令:gcc -DDEBUG -g -o main.out main_牛客网_牛客在手,offer不愁
但是在一个大工程中,我们将所有的#define __DEBUG__注释掉是一件非常痛苦的事情。 gcc提供了一种简单的方法,可以在编译时添加一些宏定义。使用-D选项。 代码如下: voidoutput(inta){ #ifdef __DEBUG__ cerr<<"this is debug infor : "<<__FUNCTION__<<' '<<a<<endl; ...
#include<iostream>intmain(){#ifdefDEBUGstd::cout<<"DEBUG"<<std::endl;#endif// system("pause");return0;} g++ -DDEBUG main.cpp -o niam 注: 使用 man gcc 命令可以查看gcc英文使用手册 用例 最初目录结构 . ├── include │ └── StaticPolymorphism.h ...
9. -D:定义预处理的宏。这个选项用于在编译时定义一个宏,可以在代码中使用#ifdef和#ifndef等条件编译指令来选择不同的代码路径。 10. -std=:指定编译器使用的C或C++标准版本。例如,”-std=c99″表示使用C99标准进行编译。这个选项对于处理不同版本的代码非常有用。
#ifdef DEBUG_PART2 DO SOMETHING ... #endif -O(n) gcc的-O选项规定了程序的优化等级,分为三个等级,分别是-O,-O2,-O3,所对应的优化等级依次增高. gcc提供代码优化功能,可以基本做到同时优化程序空间和运行效率,但是并不是优化等级越高越好,因为优化等级越高就越可能出现一些潜在的风险,因为gcc的优化并不总...
3. ifdef,ifndef,else,elif,和endif:用于条件编译。 ```c ifdef DEBUG printf("Debug version\n"); else printf("Not debug version\n"); endif ``` 4. if,elif,和else:用于基于表达式的条件编译。 ```c if defined(DEBUG) && !defined(RELEASE) printf("Debug version\n"); elif defined(RELEASE)...
(1)预处理(Preprocessing):GCC 调用预处理器使用参数-E会处理源代码中的预处理指令,包括宏展开 #define、文件包含 #include、条件编译 #ifdef、#ifndef、#if、#endif 等,得到的还是源文件,表示为test.i。 $ g++ -E test.c -o test.i (2)编译(Compilation):GCC 调用编译器使用参数-S将预处理后的代码转换...