d版本块作为表达式
version(Windows)
alias socket_t = size_t;
else
alias socket_t = int;
目前这样,太麻烦了.希望能够:
alias socket_t = version(Windows) size_t else int;
//或类似
alias socket_t = switch (builtin.target.os) {
.windows => size_t,
else => int
};
我这样:
enum BUGFIX_MAX_LIVES = Version.SM64_US || Version.SM64_EU || Version.SM64_SH;
enum BUGFIX_KING_BOB_OMB_FADE_MUSIC = Version.SM64_US || Version.SM64_EU;
如果只关心"全局
"标识符,这样:
module mver;
struct ver {
template opDispatch(string M) {
mixin(`
version(`~M~`) enum opDispatch = true;
else enum opDispatch = false;
`);
}
}
//
import mver;
static if (ver.linux && !ver.D_LP64) {
/* ... */
}
技巧:
template isVersion(string ver) {
mixin(format(q{
version(%s) {
enum isVersion = true;
}
else {
enum isVersion = false;
}
}, ver));
}
pragma(msg, isVersion!"foo"); // false
pragma(msg, isVersion!"assert"); // true
这样:
import std.meta : anySatisfy;
static if (anySatisfy!(isVersion, "assert", "unittest")) ...
版本
不合适时,使用枚举
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现