gpt4 book ai didi

c++ - 宏方法有 2 个返回值?

转载 作者:太空狗 更新时间:2023-10-29 21:49:00 26 4
gpt4 key购买 nike

我刚从 Java 转到 C++,以前从未使用过宏,我很困惑有些方法似乎返回两个变量,例如

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM)

甚至更奇怪的组合,比如

JNIEXPORT jdoubleArray JNICALL Java_algorithms_Shuffle0_getPriorities (JNIEnv *, jobject, jint, jint).

有人能告诉我这是怎么回事吗?很抱歉,如果这看起来像是极度无知,但正如我所说,我以前从未使用过宏,而且关于预处理器的 C++ 完整引用章节并没有使这些安排更加清晰。

最佳答案

您需要展开每个宏才能完全理解它。通过预处理器运行您的代码以查看它如何扩展,或使用有用的 IDE 工具向您展示。

执行此操作时,您将看到以下内容:

  • LRESULT 是结果类型。它是一些描述的整数。
  • CALLBACK 定义调用约定,即 __stdcall

至于另一个:

  • JNIEXPORT 可能扩展为 declspec(dllexport)。这指定要从库中导出函数。
  • jdoubleArray为返回值。
  • JNICALL 将成为调用约定。

您可以将这些额外标记视为函数的装饰器。它们不会在概念层面上更改函数的签名。 Java 中最接近的类似概念可能是属性。

关于c++ - 宏方法有 2 个返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9456241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com