cgo: add support for printf

The C printf function is sometimes needed for C files included using
CGo. This commit makes sure they're available on all systems where CGo
is fully supported (that is, everywhere except on AVR).

For baremetal systems using picolibc, I've picked the integer-only
version of printf to save on flash size. We might want to consider
providing a way to pick the floating point version instead, if needed.
This commit is contained in:
Ayke van Laethem
2024-01-27 12:43:45 +01:00
committed by Ron Evans
parent 3021e16bbf
commit 2eb39785fe
9 changed files with 45 additions and 7 deletions
+4
View File
@@ -179,6 +179,10 @@ func main() {
// libc: test basic stdio functionality
putsBuf := []byte("line written using C puts\x00")
C.puts((*C.char)(unsafe.Pointer(&putsBuf[0])))
// libc: test whether printf works in C.
printfBuf := []byte("line written using C printf with value=%d\n\x00")
C.printf_single_int((*C.char)(unsafe.Pointer(&printfBuf[0])), -21)
}
func printUnion(union C.joined_t) C.joined_t {