美文网首页
gcc 预处理

gcc 预处理

作者: 个00个 | 来源:发表于2020-04-16 00:09 被阅读0次

    可以使用 -E 指令来预处理 .c 文件

    即使预处理一个空文件也会生产一个乱七八糟的东西

    # empty.c 为一个空的文件
    gcc -E empty.c   
    
    [dc2-user@10-255-20-75 lab0]$ cat empty.c 
    [dc2-user@10-255-20-75 lab0]$ gcc -E empty.c 
    # 1 "empty.c"
    # 1 "<built-in>"
    # 1 "<command-line>"
    # 1 "/usr/include/stdc-predef.h" 1 3 4
    # 1 "<command-line>" 2
    # 1 "empty.c"
     
    

    这些莫名奇妙的东西叫做 linemarkers

    我自己理解了一下

    # 1 "/usr/include/stdc-predef.h" 1 3 4 
    // 表示下面的一行 来自 这个文件的第一行
    // 1 表示是个新行
    // 2 表示要进去一个新的文件了
    // 3 表示来自于系统头,要抑制警告
    // 4 表示 下面的内容 包在 extern “C” 中
    
    

    使用 -P 可以清除 linemarkers
    这个东西在某些情况下是方便汇编的。~~~

    [dc2-user@10-255-20-75 lab0]$ gcc -E empty.c
    # 1 "empty.c"
    # 1 "<built-in>"
    # 1 "<command-line>"
    # 1 "/usr/include/stdc-predef.h" 1 3 4
    # 1 "<command-line>" 2
    # 1 "empty.c"
    [dc2-user@10-255-20-75 lab0]$ gcc -E -P empty.c
    [dc2-user@10-255-20-75 lab0]$ 
    
    # 没有这些乱七八糟的东西了
    

    pps 预处理会删除注释

    [dc2-user@10-255-20-75 lab0]$ cat mytest.c 
    // hehe
    main
    [dc2-user@10-255-20-75 lab0]$ gcc -E -P mytest.c 
    main
    [dc2-user@10-255-20-75 lab0]$ 
    

    相关文章

      网友评论

          本文标题:gcc 预处理

          本文链接:https://www.haomeiwen.com/subject/uwgkvhtx.html