d合约同发布开关编译
version (assert) int foo;
void test()
in (!foo)
{}
void main() {
test();
}
用'-release'
生成时,不会编译进'foo'
,编译失败,并显示:
错误:未定义`'foo'`标识.
在发布
版本中,不删除合约
吗?
删除
了合约(即它不出现在可执行
文件中),但这不表明未分析
它.因为你的代码没有通过语义分析
,所以得到错误
.
无法
实现这一点,因为这样你的合约
中可能会有语义错误
的代码,不论是否在目标代码
中生成,编译器
需要报告它.
在合约
中报告语义
错误,编译器
不是一成不变
的.注意,当前,如果不用-unittest
编译,可能会在unittest
块中出现语义
错误的代码.(甚至不需要正确解析
,解析器只是跳至下个括号
)
但是,合约
可影响推导属性:'@system'
约定调用'@system'
函数.基于-checkaction
开关的更改
函数属性,分开编译时,可能会导致链接器错误
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现