35. safe_addr macro

safe_addr 模块实现了 safe_addr 模式,它返回本地表达式的临时地址。

所有函数和符号都在 safe_addr 模块中,使用 require 可以访问该模块。

require daslib/safe_addr

35.1. 函数注释

SafeAddrMacro

如果在对象上尝试使用 safe_addr,而该对象不是作用域的本地对象,则该宏会报错。 也就是说,如果对象在作用域中可以通过删除、垃圾回收或在 C++ 端 “过期”。

SharedAddrMacro

如果尝试对共享全局变量以外的任何内容进行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(tab: table<auto(KEY);auto(VAL)> const; k: KEY 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!

从给定指针返回临时指针