How to expand/“preprocess” C++ template code

后端 未结 3 1348
心在旅途
心在旅途 2020-12-08 09:47

To properly debug complex macros in C++ I usually run the preprocessor on them in order to see exactly what the resulting code looks like.

Is there a similar way to

3条回答
  •  时光说笑
    2020-12-08 10:38

    One way (compiler-dependent) is to use dumping after each compiler step. I wrote a small program:

    template
    T square(T n)
    {
        return n * n;
    }
    
    int main(void)
    {
        square(3);
        square(3.0);
    }
    

    then:

    g++ -fdump-rtl-all test.cc
    

    This get me a bunch of files. Take a look at (in my case) test.cc.218.dfinish:

    ;; Function int main() (main)
    ;; Function T square(T) [with T = int] (_Z6squareIiET_S0_)
    ;; Function T square(T) [with T = float] (_Z6squareIfET_S0_)
    

提交回复
热议问题