问题
Suppose I have a very simple function that I expect the compiler to inline it. But I may need to throw exception on seeing some invalid input, would that stop the compiler from inlining the function?
回答1:
A compiler can refuse to inline for any reason. gcc lists reasons why it might not inline a function, but exception throwing is not among them. Also, the option -Winline will cause the compiler to issue a warning if it can't inline a function that you marked as inline. You can try that and see if you are doing anything to prevent inlining.
回答2:
It is perfectly reasonable and valid for a compiler to inline a function that throws.
回答3:
I've just run into this situation with MSVC version 19. A function that throws an exception would not get inlined when compiling for x86. If I replace throw
with exit(1)
or if I compile for x86-64, it gets inlined just fine.
来源:https://stackoverflow.com/questions/7494399/would-c-exception-stops-function-from-being-inlined