|
导航:[首页]->[cpp]->[可变参数及其陷阱]
说到可变参数,最常见的就是printf系列。在可变参数中一个重要的问题就是如何知道我需要多少个参数 对于printf系列,通过前面一个模式字符串来描述,例如%d表示一个整形数字。 而fcntl则通过cmd来确定,例如当cmd为F_SETFD时,那么后面需要一个int,若为F_GETFD,则无需参数 下面这个例子更直接,通过第一个参数n指定参数个数,总之任何方法都行。 不过需要多少参数只是我们的期望,调用时实际输入了多少,却不得而知,例如上面的例子,我调用FindMax时,FindMax(7,1,2)也可以运行,但程序还是会老老实实的寻找7个可变参数,这有可能导致非法内存访问。 对于printf类似的函数,可以使用__attribute__((format加以检测。 #参考 |