• Russ Cox's avatar
    cc: add two new #pragma varargck · fe2ccb53
    Russ Cox authored
    #pragma varargck countpos f 1
    says that the first argument to f is
    the count of variadic arguments that follow.
    
    #pragma varargck type f t
    says that t is one of the allowed types for
    a variadic argument to f.
    (can be repeated)
    
    combined, these can be used to check the
    runtime.stdcall functions in the windows port
    or in any other port that needs a vararg list of
    uintptrs even on a 64-bit platform (where it is
    very easy to pass a less-than-uintptr in the ...).
    
    demo:
    
    typedef unsigned int uintptr;
    
    #pragma varargck countpos f 1
    #pragma varargck type f uintptr
    #pragma varargck type f void*
    
    int f(int count, ...);
    
    void *v;
    char *p;
    
    void
    main(void)
    {
            f(1, v);  // ok
            f(1, main);  // ok
            f(1, p);  // ok
            f(2, v, v);  // ok
    
            f(2, v);  // found 1 argument after count 2
            f(1, 'a');  // invalid type INT in call to f
            f(1, 0);  // invalid type INT in call to f
    }
    
    R=ken, r, alex.brainman
    CC=golang-dev
    https://golang.org/cl/4634103
    fe2ccb53
Name
Last commit
Last update
doc Loading commit data...
include Loading commit data...
lib Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.hgignore Loading commit data...
.hgtags Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...