为什么#define不好?

shi*_*hix 1 c c++ iostream c-preprocessor

可能重复:
C++宏什么时候有用?
为什么#define不好,什么是正确的替代品?

有人告诉我#define很糟糕.好吧,老实说我不明白为什么不好.如果它不好,那么我可以用其他方式做到这一点呢?

#include <iostream>
#define stop() cin.ignore(numeric_limits<streamsize>::max(), '\n');
Run Code Online (Sandbox Code Playgroud)

Gre*_*ill 6

#define本质上并不.但是,通常有更好的方法来做你想要的.考虑一个inline功能:

inline void stop() {
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
Run Code Online (Sandbox Code Playgroud)

(实际上,你甚至不需要这样inline的功能.只需一个简单的普通函数就可以了.)