所以我试图覆盖 c 中的 fscanf 函数,但我只希望在满足某些条件时发生不同的行为;如果不满足这些条件,我只想调用原始的 fscanf。我知道您可以使用 dlsym 在插入函数时使用它的原始版本,但 fscanf 的问题在于它是可变参数的。我可以使用 va_list 和 va_arg 获取传递给我的函数的所有参数,但是当我实际上不知道有多少参数时,我应该如何在这些参数上调用原始 fscanf?
问问题
163 次
所以我试图覆盖 c 中的 fscanf 函数,但我只希望在满足某些条件时发生不同的行为;如果不满足这些条件,我只想调用原始的 fscanf。我知道您可以使用 dlsym 在插入函数时使用它的原始版本,但 fscanf 的问题在于它是可变参数的。我可以使用 va_list 和 va_arg 获取传递给我的函数的所有参数,但是当我实际上不知道有多少参数时,我应该如何在这些参数上调用原始 fscanf?