欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C语言基础篇-数据类型(一)gcc编译和预处理

程序员文章站 2022-10-16 17:27:17
导航: 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. 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 0;
}