导航:

  1. gcc编译

  2. 预处理

----->x<------------->x<--------------->x<--------------->x<------------->x<-----

1. gcc编译

        -- 1.0 预处理 gcc -E [.c --> .i ] 展开宏定义.
        -- 1.1 编译 gcc -S [ .c --> .s ]
        -- 1.2 汇编 gcc -c [ .s --> .o ]
        -- 1.3 链接 gcc -o [*.o --> bin] 链接了系统库.
        -- 1.4 手动链接库文件 -I 比如我拿到了一个私库,没有提供源码只提供了一些接口.那么在使用后编译的时候
                需要手动导入,就是库的使用. -I路径. 在后文,我们自己会生成库文件,静态库和动态库,这个很基础,一定要学好.
        -- 1.5 预处理开关 gcc -Dxxx 打开预处理的选项.!!
 
2.预处理
  2.1 #include
    #include "" 和 #include <> 的区别. <>只寻找系统库.不寻找用户头文件.
  2.2 #define
    (1) 替换: #define 宏名 宏体 在替换过程中不进行语法检查,所以宏体运算尽量加().

    比如: #define A 3+2
      a = 4*A --> 4*3+2 xx #define A (3+2)
    (2) 宏函数 #define ABC(x) (5+x)
  2.3 #ifdef #ifndef #else #endif
    (1) 条件预处理
    应用:调试版本和发行版本的切换

    (2) # 和 ##

      define ABC(x) #x 实际上是转换成"x" 字符串
      define ABC(x) day##x -->dayx 就是一个连接符,把day当前前缀再展开.
define:

int main()
{
#ifdef ABC
printf("我是调试信息\n");
#endif
printf("我是正常信息\n");
return ;
}

 

最新文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(61)-如何使用框架来开发
  2. nim也玩一行流,nim版的list comprehension
  3. 改int非空自增列为int可为空列
  4. Codeforces 741B:Arpa&#39;s weak amphitheater and Mehrdad&#39;s valuable Hoses(01背包+并查集)
  5. Tomcat中xml文件引入各种schma xsd问题原理
  6. data-theme 几种值的样式
  7. android 去掉listview之间的黑线
  8. 学习git的使用--在当地的简单命令--01
  9. 常见的几种Flume日志收集场景实战
  10. ABP框架 - 规约
  11. hadoop环境运行程序出现 Retrying connect to server 问题
  12. JS代码检查工具ESLint
  13. h5的video下载按钮如何隐藏
  14. 自动重置Language level 5 与 Java Complier 1.5
  15. CentOS 7 NAT模式LVS搭建
  16. 学习4__STM32--中断
  17. pssh,pdsh,mussh,cssh,dsh运维工具介绍
  18. Linux-数据库4
  19. windows下thrift的使用(C++)
  20. Git的4个阶段的撤销更改

热门文章

  1. RCLighting
  2. POP3、SMTP端口(SSL、TSL)
  3. 沉淀再出发:Bean,JavaBean,POJO,VO,PO,EJB等名词的异同
  4. 深入浅出SharePoint——定制保存Item按钮
  5. Codeforces Round #443 (Div. 2) 【A、B、C、D】
  6. Bean Definition从加载、解析、处理、注册到BeanFactory的过程。
  7. CF 553E Kyoya and Train
  8. UVa 1639 - Candy(数学期望 + 精度处理)
  9. Spring JPA 主键
  10. 2019.3.25 IDEA控制台乱码解决 &amp;&amp;idea关闭代码自动提示