要调用一个已完成部署的合约,您需要指定被调用的方法,这个方法被称为合约接口,如 合约编译 示例中的 hi
方法。并非所有的方法都可以称为合约接口,将一个方法定义为合约接口需要满足下列条件:
将方法定义为 public。
使用
INTERFACE
宏修饰。INTERFACE宏导出的方法,其返回值类型只支持 可序列化数据类型。
在合约外使用
INTERFACE_EXPORT
宏导出。
下面分别介绍 INTERFACE
与 INTERFACE_EXPORT
宏的使用方式。
INTERFACE 宏
INTERFACE 的使用形式如下:
INTERFACE 返回值类型 函数名(参数列表){
//函数体
}
示例如下:
INTERFACE int64_t add(int64_t x, int64_t y) {
int64_t z = x + y;
return z;
}
INTERFACE_EXPORT 宏
INTERFACE_EXPORT
的使用方式如下:
INTERFACE_EXPORT(合约名,(方法1)(方法2)...(方法n))
示例:
/*hello.cpp*/
#include <mychainlib/contract.h>
using namespace mychain;
class hello:public Contract {
public:
INTERFACE int64_t add(int64_t x, int64_t y) {
return x + y;
}
INTERFACE int64_t sub(int64_t x, int64_t y) {
return x - y;
}
};
INTERFACE_EXPORT( hello, (add)(sub))
INTERFACE_EXPORT
导出方法仅支持以下类型的参数:
int8_t
uint8_t
int16_t
uint16_t
int32_t
uint32_t
int64_t
uint64_t
bool
std::string
Identity
std::vector<T>
(“T”仅限于上面的类型,如std::vector<int8_t>
)
说明
注意:INTERFACE_EXPORT导出的方法,不允许重载。
文档内容是否对您有帮助?