سؤال

I'd like to see all macros that are defined by the invocation of the compiler I'm using. Is there any way to do this? I have seen in the manual it says you can use cpp -dM but this doesn't work for me. Perhaps I'm doing something wrong?

When I run:

cpp -dM

I get no output at all from the preprocessor. If I try adding -dM as an option on gcc, I don't notice any difference.

هل كانت مفيدة؟

المحلول

You can use:

gcc -dM -E - < /dev/null

Note that you can also get the compiler macros in addition with this command:

touch bla.c && gcc -dM -E bla.c

For example on my computer:

$ touch bla.c && gcc -dM -E bla.c | wc -l
486
$ gcc -dM -E - < /dev/null | wc -l
124
$

نصائح أخرى

By default, cpp -dM will read its input file from standard input and write to standard output. Since you're not trying to preprocess any input, you can pass it the empty input using /dev/null:

# Option 1
cpp -dM < /dev/null
# Optio n2
cpp -dM /dev/null

On Windows, you can use the NUL pseudofile instead of /dev/null.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top