| // Copyright 2017 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package cgotest |
| |
| /* |
| #define HELLO "hello" |
| #define WORLD "world" |
| #define HELLO_WORLD HELLO "\000" WORLD |
| |
| struct foo { char c; }; |
| #define SIZE_OF(x) sizeof(x) |
| #define SIZE_OF_FOO SIZE_OF(struct foo) |
| #define VAR1 VAR |
| #define VAR var |
| int var = 5; |
| |
| #define ADDR &var |
| |
| #define CALL fn() |
| int fn(void) { |
| return ++var; |
| } |
| */ |
| import "C" |
| import "testing" |
| |
| func test18720(t *testing.T) { |
| if got, want := C.HELLO_WORLD, "hello\000world"; got != want { |
| t.Errorf("C.HELLO_WORLD == %q, expected %q", got, want) |
| } |
| |
| if got, want := C.VAR1, C.int(5); got != want { |
| t.Errorf("C.VAR1 == %v, expected %v", got, want) |
| } |
| |
| if got, want := *C.ADDR, C.int(5); got != want { |
| t.Errorf("*C.ADDR == %v, expected %v", got, want) |
| } |
| |
| if got, want := C.CALL, C.int(6); got != want { |
| t.Errorf("C.CALL == %v, expected %v", got, want) |
| } |
| |
| if got, want := C.CALL, C.int(7); got != want { |
| t.Errorf("C.CALL == %v, expected %v", got, want) |
| } |
| |
| // Issue 20125. |
| if got, want := C.SIZE_OF_FOO, 1; got != want { |
| t.Errorf("C.SIZE_OF_FOO == %v, expected %v", got, want) |
| } |
| } |