我在codegolf.stackexchange网站上找到了这段代码。
#include <stdio.h>
#define function int
#define var int
struct { int (*log)(const char *,...); } console = { printf };
/* From here on only JavaScript! */
function fac(x){
if(x < 2) return 1;
return x * fac(x - 1);
}
function main(){
console.log("Hello world!\n");
for(var i = 0; i < 10; i++){
console.log("%i! = %i\n", i, fac(i));
}
return 0;
}
// *Should* we export the main function of this library??/
exports.main = main;
我的问题是,如何在不包含stdarg.h的情况下运行可变参数函数?
答案 0 :(得分:4)
因为他没有操纵...参数,只是简单地将指针传递给内部操作...参数的函数,在这种情况下是printf:
int __cdecl printf(const char *_Format, ...);
注意:并非所有编译器都支持__cdecl调用约定。
此外,他定义的宏是毫无意义的,不应该在任何情况下使用,因为它不是C.