github.com/panjjo/go@v0.0.0-20161104043856-d62b31386338/misc/cgo/test/checkconst.go (about)

     1  // Copyright 2016 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // Test a constant in conjunction with pointer checking.
     6  
     7  package cgotest
     8  
     9  /*
    10  #include <stdlib.h>
    11  
    12  #define CheckConstVal 0
    13  
    14  typedef struct {
    15  	int *p;
    16  } CheckConstStruct;
    17  
    18  static void CheckConstFunc(CheckConstStruct *p, int e) {
    19  }
    20  */
    21  import "C"
    22  
    23  import (
    24  	"testing"
    25  	"unsafe"
    26  )
    27  
    28  func testCheckConst(t *testing.T) {
    29  	// The test is that this compiles successfully.
    30  	p := C.malloc(C.size_t(unsafe.Sizeof(C.int(0))))
    31  	defer C.free(p)
    32  	C.CheckConstFunc(&C.CheckConstStruct{(*C.int)(p)}, C.CheckConstVal)
    33  }