Tag: function overloading

使用GCC在C中的函数重载 – 具有多个参数的函数

在前面的一个问题中,当每个函数只接受一个参数时,我找到了一种在C99中重载函数的方法。 请参阅以下内容中的答案: C中的函数重载使用GCC – 编译器警告以获取详细信息。 现在我已经找到了使用单个参数函数的方法,我想知道如何对带有多个参数的函数进行此操作。 我假设它将与__VA_ARGS__和使用…但我似乎无法找到任何有效甚至想要编译的东西。 这适用于带有2个参数的打印: #define print(x, y) \ __builtin_choose_expr(__builtin_types_compatible_p(typeof(x), int) && \ __builtin_types_compatible_p(typeof(y), int), print_int, \ (void)0)(x, y) 但如果我还想要另一个带有一个参数的版本,我就无法重新定义它。 添加这将给我一个错误,说重新定义print : #define print(x) \ __builtin_choose_expr(__builtin_types_compatible_p(typeof(x), char[]), print_string, \ (void)0)(x) 如何重载打印,以便它可以使用2个整数作为输入或字符数组? 示例用法: print(1, 2); print(“this”); 或者甚至更好……我怎样才能使它与任何类型的组合或任意数量的参数一起使用? 还要记住,因为这是C99,_Generic关键字不可用。