cgoとC99のbool型
code:hoge.go
package main
// const bool CONSTTRUE = true;
//
// int bool2int(bool b) {
// if (b) {
// return 1;
// } else {
// return 0;
// }
// }
import "C"
import "fmt"
func main() {
fmt.Printf("MACROTRUE = %1v: %1T \n", C.MACROTRUE) fmt.Printf("CONSTTRUE = %1v: %1T \n", C.CONSTTRUE) // OK
fmt.Printf("bool2int(true) = %d\n", C.bool2int(true))
fmt.Printf("bool2int(CONSTTRUE) = %d\n", C.bool2int(C.CONSTTRUE))
// NG - cannot use _Ciconst_MYTRUE (type int) as type _Ctype__Bool in argument to _Cfunc_bool2int
// fmt.Println("bool2int(MACROTRUE) = %d\n", C.bool2int(C.MACROTRUE))
}
code:出力(txt)
MACROTRUE = 1: int
CONSTTRUE = true: main._Ctype__Bool
bool2int(true) = 1
bool2int(CONSTTRUE) = 1
実用上はGoのtrue/falseを使えば済むので問題はほぼ無いけれど、面白い。
参考