modernc.org/cc@v1.0.1/v2/testdata/cpp-expand/009.c (about) 1 long __syscall(syscall_arg_t, ...); 2 3 #ifndef __scc 4 #define __scc(X) ((long) (X)) 5 typedef long syscall_arg_t; 6 #endif 7 8 9 #define __SYSCALL_CONCAT(a,b) __SYSCALL_CONCAT_X(a,b) 10 #define __SYSCALL_CONCAT_X(a,b) a##b 11 #define __SYSCALL_DISP(b,...) __SYSCALL_CONCAT(b,__SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__) 12 #define __SYSCALL_NARGS(...) __SYSCALL_NARGS_X(__VA_ARGS__,7,6,5,4,3,2,1,0,) 13 #define __SYSCALL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n 14 #define __sys_open(...) __SYSCALL_DISP(__sys_open,,__VA_ARGS__) 15 #define __sys_open3(x,pn,fl,mo) __syscall4(SYS_openat, AT_FDCWD, pn, (fl)|O_LARGEFILE, mo) 16 #define __syscall4(n,a,b,c,d) (__syscall)(n,__scc(a),__scc(b),__scc(c),__scc(d)) 17 #define sys_open(...) __syscall_ret(__sys_open(__VA_ARGS__)) 18 19 int fd = sys_open(filename, flags, 0666);