35. safe_addr macro
safe_addr 模块实现了 safe_addr 模式,它返回本地表达式的临时地址。
所有函数和符号都在 safe_addr 模块中,使用 require 可以访问该模块。
require daslib/safe_addr
35.1. 函数注释
- SafeAddrMacro
如果在对象上尝试使用 safe_addr,而该对象不是作用域的本地对象,则该宏会报错。 也就是说,如果对象在作用域中可以通过删除、垃圾回收或在 C++ 端 “过期”。
如果尝试对共享全局变量以外的任何内容进行shared_addr,则此宏将报告错误。 即,只有全局变量可以安全地与 shared_addr 一起使用。
35.2. 安全的临时地址
- safe_addr(x: auto(T)& ==const)
safe_addr returns T?#
argument |
argument type |
---|---|
x |
auto(T)&! |
返回指向给定 expressio 的临时指针
- safe_addr(x: auto(T) const& ==const)
safe_addr returns T? const#
argument |
argument type |
---|---|
x |
auto(T) const&! |
返回指向给定表达式的临时指针
shared_addr returns auto
argument |
argument type |
---|---|
tab |
table<auto(KEY);auto(VAL)> const |
k |
KEY const |
返回给定共享变量的地址。这是安全的,因为共享变量永远不会超出范围
- shared_addr(val: auto(VALUE) const&)
shared_addr returns auto
argument |
argument type |
---|---|
val |
auto(VALUE) const& |
返回给定共享变量的地址。这是安全的,因为共享变量永远不会超出范围
35.3. 临时指针
- temp_ptr(x: auto(T)? const implicit ==const)
temp_ptr returns T? const#
argument |
argument type |
---|---|
x |
auto(T)? const implicit! |
从给定指针返回临时指针
- temp_ptr(x: auto(T)? implicit ==const)
temp_ptr returns T?#
argument |
argument type |
---|---|
x |
auto(T)? implicit! |
从给定指针返回临时指针