Run preprocessor only but with only for certain statements

前端 未结 5 1107
-上瘾入骨i
-上瘾入骨i 2020-12-29 07:49

I have a number of debug statements defined in a program, and I want to be able to make a copy of the source without these statements.

In order to do this I first lo

5条回答
  •  星月不相逢
    2020-12-29 08:27

    If -E is not helping, then try using -fdump-tree-all and if you don't see what you want the that is not-available-in (or) not-provided-by GCC.

    OTOH, this question has been discussed in SO as follows, please refer the below to get some ideas.

    1. Can gcc output C code after preprocessing?
    2. How do I see a C/C++ source file after preprocessing in Visual Studio?

    Hope it helps!


    Hi Mat,

    I saw your comment to @nos. But I have one such script handy and so sharing it with you. You can try reading my answer for a similar question here

    Copy the below code in a file, say convert.sh. Assign execute permission to that file, chmod +x convert.sh and run it as follows:

    $./convert.sh .c
    $cat filename.c.done
    

    The .c.done will have what you need!

    #!/bin/bash
    
    if [[ $# -ne 1 || ! -f $1 ]] ; then
        echo "Invalid args / Check file "
        exit 
    fi
    
    file_name=$1
    
    grep '^\s*#\s*include' $file_name > /tmp/include.c
    grep -Pv '^\s*#\s*include\b' $file_name > /tmp/code.c
    gcc -E /tmp/code.c | grep -v ^# > /tmp/preprocessed.c
    cat /tmp/include.c > $file_name.done
    cat /tmp/preprocessed.c >> $file_name.done
    

    Hope this helps!

提交回复
热议问题