使用不同的返回值声明外部"C"
declare extern "C" with different return values
我在外部ASM文件中定义了一个名为ecall的函数。此函数接受不同数量的参数并返回不同的值。
这就是它在我的源代码中的样子:
int ret = _function1("Hello", "world");
HANDLER h = _function2(123456);
char * ch = _function3("asdf", 789, h);
// ... and so on
这些"函数"实际上是用一个简单的python脚本生成的宏。这个自动生成的头文件中定义了所有这些宏,看起来像:
extern "C" ????? ecall(int code, ...);
#define _function1(...) ecall(0x123, __VA_ARGS__)
#define _function2(...) ecall(0x234, __VA_ARGS__)
#define _function3(...) ecall(0x345, __VA_ARGS__)
#define _function4(...) ecall(0xABC, __VA_ARGS__)
// ... and around 500 more definitions with a different code value
然而,我被困在ecall的声明上(我标记为"???")。我需要以某种方式指定返回值,但事实上,这个函数几乎返回所有内容(取决于int代码值)——布尔值、整数、指针等。
有办法做到这一点吗?我正在MSVC10上编译。
谢谢。
要么创建自己的变体类型(包括每个类型的并集),要么创建不同的函数,每个函数只返回一个特定的类型。
相关文章:
- 在函数内部的声明中初始化数组,并在外部使用它
- 声明后初始化类外部的数组
- 冲突的声明(外部基础与派生)
- C++ 没有在命名空间外部声明的类主体的类
- 在类外部初始化的 constexpr 静态成员的声明中是否需要 constexpr 说明符
- 如何在命名空间中声明外部全局,然后定义它?
- C++:在循环内部或外部声明一个向量
- C |声明类外部功能
- 我们是否应该在项目中包含的所有文件中声明外部变量
- 我可以清除外部声明为进一步使用的数组吗?
- 如何在C 中声明外部CUDA函数模板
- 用关键字声明外部本地变量
- 关于全局变量的外部声明"C"外部声明
- 在头文件中声明外部变量
- 使用不同的返回值声明外部"C"
- C++:在头文件中声明外部向量容器会导致错误
- 错误 C2899:不能在模板声明外部使用类型名
- 在模板实例化上声明外部 C 函数
- 在.cpp中声明外部变量而不是头文件有什么用?
- 向前声明外部结构