首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在D中实现C风格的sizeof()函数

在D中实现C风格的sizeof()函数
EN

Stack Overflow用户
提问于 2016-08-19 08:40:46
回答 1查看 64关注 0票数 1

我想用D实现一个C风格的sizeof()函数(我知道.sizeof的事情,但它有助于移植很多C语言(C99))。

我希望它能够在编译时运行,显然,它可以接受类型或表达式作为参数。理想情况下,如果可能的话,我希望它具有与C语言相同的语法,而不是使用独特的模板调用语法,因为这将极大地提高它的实用性。这有可能吗?

EN

回答 1

Stack Overflow用户

发布于 2016-08-19 08:57:53

如果我没理解错的话,你想要一个类似于下面的size函数的行为?size2将是一个运行时函数,这在D中当然是没有意义的。然而,你仍然可以用enum val = size2(2 + 2);从CT上的size2获得值。这对你有帮助吗?

代码语言:javascript
复制
template size(T)
{
    enum size = T.sizeof;
}

// for expressions
template size(alias T)
{
    enum size = T.sizeof;
}

auto size2(T)(T x)
{
    return T.sizeof;
}

void main(string[] args)
{
    import std.stdio : writeln;

    writeln(size!int); // 4
    writeln(size!long); // 8
    writeln(size!(1 + 1)); // 4


    writeln(size2(2));  // 4
    writeln(size2(2L)); // 8
    writeln(size2(2 + 2)); // 4
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39029511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档