宏方法有 2 个返回
Macro method has 2 returns?
我刚刚从 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++中同一类中的构造函数调用的方法返回的值
- 让bool方法返回其他整数
- 不能将方法返回的值用于另一个方法
- 如何实现 Front() 方法以返回模板化双向链表C++的第一个元素?
- 从私有成员变量的成员方法返回unique_ptr
- 我的模板类方法返回错误类型?
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- QtQuick - qml:28:错误:未知方法返回类型:自定义类型
- 方法错误"not all control paths return a value"和方法不返回值
- GRPC C++ TLS 客户端 grpc::SslCredentials() 方法不返回
- 我无法使用C++指针指向类方法返回的 std::vector
- 如何在工厂方法中返回指向基于基础操作系统的派生类的有效指针
- 将传入的网络"char*"数据转换为"uint8_t"并返回的安全方法是什么?
- C++方法是否可以根据传递给构造函数的参数具有不同的返回类型?
- EnQueue 方法在循环队列中未正确返回C++?
- 应用于const和非const对象的引用返回方法
- 在vc++ PPL中,如何创建一个同步返回的任务返回方法
- 为什么从浮点返回方法返回双精度不会在 c++ 中导致任何错误/警告
- 这个返回方法叫什么?