mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-06 03:53:42 +00:00
e02727679f
For example, the following did not work before but does work with this
change:
// int add(int a, int b) {
// return a + b;
// }
import "C"
func main() {
println("add:", C.add(3, 5))
}
Even better, the functions in the header are compiled together with the
rest of the Go code and so they can be optimized together! Currently,
inlining is not yet allowed but const-propagation across functions
works. This should be improved in the future.
65 lines
1.1 KiB
Plaintext
65 lines
1.1 KiB
Plaintext
fortytwo: 42
|
|
add: 8
|
|
myint: 3 5
|
|
myint size: 2
|
|
longlong: -1099511627776
|
|
global: 3
|
|
defined ints: 5 5
|
|
defined floats: +5.800000e+000 +5.800000e+000
|
|
defined string: defined string
|
|
defined char: 99
|
|
defined expr: 9
|
|
15: 15
|
|
25: 25
|
|
callback 1: 50
|
|
callback 2: 600
|
|
variadic0: 1
|
|
variadic2: 15
|
|
headerfunc: 6
|
|
bool: true true
|
|
float: +3.100000e+000
|
|
double: +3.200000e+000
|
|
complex float: (+4.100000e+000+3.300000e+000i)
|
|
complex double: (+4.200000e+000+3.400000e+000i)
|
|
complex long double: (+4.300000e+000+3.500000e+000i)
|
|
char match: true
|
|
void* match: true true true
|
|
int64_t match: true
|
|
struct: true 256 -123456 +3.140000e+000
|
|
array: 5 6 7
|
|
union: true
|
|
union s: 22
|
|
union f: +3.140000e+000
|
|
union global data: 5 8 1
|
|
union local data: 5 8 1
|
|
union s: true
|
|
union f: +6.280000e+000
|
|
union field: +6.280000e+000
|
|
bitfield a: 15
|
|
bitfield b: 1
|
|
bitfield c: 2
|
|
bitfield d: 47
|
|
bitfield e: 5
|
|
bitfield a: 7
|
|
bitfield b: 0
|
|
bitfield c: 3
|
|
bitfield d: 47
|
|
bitfield e: 5
|
|
struct: 3 5
|
|
n in chain: 3
|
|
n in chain: 6
|
|
n in chain: 7
|
|
option: 12
|
|
option A: 0
|
|
option B: 1
|
|
option C: -5
|
|
option D: -4
|
|
option E: 10
|
|
option F: 11
|
|
option G: 12
|
|
option 2A: 20
|
|
option 3A: 21
|
|
enum width matches: true
|
|
CFLAGS value: 17
|
|
copied string: foobar
|