如何将Chapel字符串传递给需要(非常量)char*的C函数?

Nik*_*han 5 chapel

假设我有一个Chapel字符串

var s : string;
Run Code Online (Sandbox Code Playgroud)

我如何将它发送到期望char*(自c_string假设const char *)的函数?

mpp*_*ppf 4

这是一个执行此操作的示例

extern {
  #include <stdio.h>
  static void f(char* argument) {
    printf("%s\n", argument);
  }
}

var s: string = "hello";
f(s.c_str():c_void_ptr:c_ptr(c_char));
Run Code Online (Sandbox Code Playgroud)

请注意对 c_void_ptr 的强制转换,这在 Chapel 1.19 之前是必需的。