Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
638 views
in Technique[技术] by (71.8m points)

c - Macro Expansion

Basic question

#define A 5
#define B 10

#define C (A*B)


int var;
var = C;

so here how macros will be expanded, Is it

var = (5*10)

or

var = (50)

My doubt is on the macro expansion. If macros has some calculations (*,-,/,+) on all constant,then will marco is just a in line expansion or it will evaluate the result and post it

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Macro expansion is always just a textual transform of the input source code. You should be able to see the code after the pre-processor (the part of the compilation that does the macro expansion) is done; this text is what the compiler proper then works on.

But many compilers do "constant folding" optimization during compilation, that will optimize 5 * 10 to 50 so that it doesn't need to be calculated at runtime.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...