外部 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でコンパイルしています。
ありがとう。