Calmarius
Calmarius

Reputation: 19451

How to find compiler errors in C macros?

We have a code base that relies on lots of generated code generated by C macros.

If something goes wrong and there is a error or a warning, the compiler points at the line of the first macro expansion without telling more about where it went wrong inside the expanded code. I my particular case they are those /analyze warnings in Visual Studio.

Are there any tricks and tips that help find problems in complex preprocessor macros?

EDIT:

If you wonder why this code base have complex macros.

This is an emulator project where the decoding phase and execution phase is separated. For example instead of finding out during the execution of each instruction what addressing mode or operand size, etc is used, we generate a function for each combination with a DEFINE_INSTRUCTION macro which in turn generate the functions for all combinations. And chain these functions.

Upvotes: 0

Views: 150

Answers (1)

Daij-Djan
Daij-Djan

Reputation: 50129

  1. idea: dont ;) don't use macros that are complicated as you loose a lot of IDE support / compiler support

=> if you have such macros, refactor them into functions... maybe even inline functions

but seriously. to help you with the bad macros you're stuck with: As TripeHound said, there are flags to 'compile' C files only to the stage of preprocessed C files --

On the command line, clang -E foo.m will show you the preprocessed output.

Upvotes: 1

Related Questions