Skip to content

Commit

Permalink
cmd/cgo: document errno value semantics
Browse files Browse the repository at this point in the history
Added a section about errno values vs normal go
error value semantics, and checking the return
value of C functions for error before looking at
errno.

Fixes #63485

Change-Id: Id0132a9f11e4127f4adc14e010b7e17f57a0f7d3
Reviewed-on: https://go-review.googlesource.com/c/go/+/616264
Reviewed-by: Michael Knyszek <[email protected]>
LUCI-TryBot-Result: Go LUCI <[email protected]>
Auto-Submit: Ian Lance Taylor <[email protected]>
Reviewed-by: Ian Lance Taylor <[email protected]>
  • Loading branch information
codekitchen authored and gopherbot committed Oct 1, 2024
1 parent e470a00 commit b37b27b
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/cmd/cgo/doc.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,17 @@ function returns void). For example:
_, err := C.voidFunc()
var n, err = C.sqrt(1)
Note that the C errno value may be non-zero, and thus the err result may be
non-nil, even if the function call is successful. Unlike normal Go conventions,
you should first check whether the call succeeded before checking the error
result. For example:
n, err := C.setenv(key, value, 1)
if n != 0 {
// we know the call failed, so it is now valid to use err
return err
}
Calling C function pointers is currently not supported, however you can
declare Go variables which hold C function pointers and pass them
back and forth between Go and C. C code may call function pointers
Expand Down

0 comments on commit b37b27b

Please sign in to comment.