The header file smi.h from libsmi (https://github.com/mikeowens/libsmi) 
declares a typedef using "long double"

typedef long double             SmiFloat128;

In Go versions prior to 1.11, programs using smi.h compiled without error. 
In Go 1.11, cgo calls out "long double" as "unexpected". Here is that 
changed behaviour:

bruce@calochilus:/tmp$ go version
go version go1.11 linux/amd64
bruce@calochilus:/tmp$ go build longdouble.go 
# command-line-arguments
-: unexpected: 16-byte float type - long double
bruce@calochilus:/tmp$ go1.10/bin/go version
go version go1.10.3 linux/amd64
bruce@calochilus:/tmp$ go1.10/bin/go build longdouble.go 
bruce@calochilus:/tmp$ cat longdouble.go 
package main

/*
#cgo LDFLAGS: -lsmi
#include <stdlib.h>
#include <smi.h>
*/
import "C"

import (
"fmt"
)

type SmiType struct {
smiType *C.struct_SmiType
}

func main() {
fmt.Println("Hello")
}
bruce@calochilus:/tmp$

So this raises two questions for me:

a) is it a bug that the error message does not include a line number (the 
code in cmd/cgo/gcc.go tries to print a line number)
b) what is a 'best practice' approach to handling such an incompatible 
C-type?

Regards
Bruce

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to