【发布时间】:2020-01-06 06:47:06
【问题描述】:
乐/Perl6 窗户
在 Raku 的原生呼叫中 https://docs.raku.org/language/nativecall
您在子声明中使用 C 的 (LPTSTR) &lpMsgBuf 做什么?那是指向指针的指针吗?
非常感谢, -T
编辑:为了消除任何误解,我不是在问如何用“C”或“C++”写东西。 Raku 就是 Perl 6 现在的名称。而 NativeCall 是一个 Raku 模块(不是 C),它与系统调用(例如 Kernel32.dll)进行交互。
我的问题是在 Raku / Perl 6 中,我如何在 Raku 子声明行中表示 (LPTSTR) &lpMsgBuf。
如果有帮助,(LPTSTR) &lpMsgBuf 是 C++ 语法,在 Kernel32.dll 的调用中表示为 LPTSTR。
【问题讨论】:
-
你试过
Pointer吗?如果失败,请编辑您的问题以包含minimal reproducible example 以及您尝试过的其他内容的详细信息。如果它看起来有效,请分享这个明显成功的细节以及你为什么不接受它。如果您还没有尝试过Pointer,请尝试一下。如果您不想尝试,请说明您不尝试的原因。 TIA。 -
(LPTSTR) &lpMsgBuf不是内置在 C 中的东西。它是某些人编写的 C 代码,大概是 Microsoft。我从您之前提出的问题中认出了LPTSTR。如果你还不知道它的定义,请查明。如果您知道,请编辑您的问题以包含其定义,以便读者也知道。 -
我不认为 Raku 或 NativeCall 是 C 模块,也不认为您在询问 C。您误解了我的 cmets。您还没有解释
LPTSTR是什么。 (大概是一个指向 C 字符串的指针,但您需要指定。)您没有解释您尝试过的内容以及它是如何进行的,也没有解释您通过研究发现了什么。作为提出 SO 问题的文化契约的一部分,这是您的责任的一部分。您还没有解释诸如所涉及的 C 函数和 Raku 函数将如何处理lpMsgBuf之类的事情。这是确定正确的参数规范所必需的。 -
“如果有帮助,
(LPTSTR) &lpMsgBuf是 C++ 语法”。它是 C 语法(C++ 开始时主要是 C 的超集)。它指定an explicit type conversion。 “LPTSTR在 Kernel32.dll 的调用中。”感谢您的尝试。我自己的尝试是"LPTSTRis a pointer to a (non-const)TCHARstring"。 -
嗨 Raiph,我想我正在与其他已经知道我在说什么的程序员通信。 LPTSTR 是一个指向“C”TCHAR 字符串的长指针。在 32 位和 64 位系统上,“L”并非没有意义。 A TCHAR 是 CHAR 是你没有使用 unicode -T
标签: raku