Jump to content
    

Можно ли заставить несколько составных литералов использовать одну и ту же память стека?

9 часов назад, dxp сказал:

Плюсовый вариант со всех сторон удобнее и практичнее. В С так, полагаю, из-за легаси, сделали в древние времена такую семантику, которая тогда казалась логичной, а поменять такое уже нельзя.

Я думаю это дело привычки. Писать вот так

CANFrame frame;
can_Send(&(frame = (CANFrame){}));

я бы не стал даже в плюсах, несмотря на то, что они это позволяют.

Дело именно в принципиальности написания так, как в первом посте. Но раз уж в CLang пока что не вразумили не потреблять зазря стек, но подвижки в этом направлении прослеживаются, я подожду.

Share this post


Link to post
Share on other sites

1 hour ago, Arlleex said:

я подожду.

Может просто принять это всё как неисправимое зло и подстраиватся?

Share this post


Link to post
Share on other sites

3 часа назад, Arlleex сказал:

Дело именно в принципиальности написания так, как в первом посте. Но раз уж в CLang пока что не вразумили не потреблять зазря стек, но подвижки в этом направлении прослеживаются, я подожду.

В плюсах всё это можно даже проще написать:

int32_t can_Send(sCANFrame const& frame)
{
    printf("%d\r\n", frame.id);
    return 1;
}

void test()
{
    can_Send({
        .id     = 11,
        .ext    = 1,
        .rtr    = 1,
        .dlc    = 0,
        .word   = {0u, 1u}
    });
}

Думаю, что и со стеком будет всё нормально.

Share this post


Link to post
Share on other sites

1 час назад, AHTOXA сказал:

В плюсах всё это можно даже проще написать:

int32_t can_Send(sCANFrame const& frame)
{
    printf("%d\r\n", frame.id);
    return 1;
}

void test()
{
    can_Send({
        .id     = 11,
        .ext    = 1,
        .rtr    = 1,
        .dlc    = 0,
        .word   = {0u, 1u}
    });
}

Думаю, что и со стеком будет всё нормально.

Угу, в C++ режиме компилится в один стекфрейм. Ожидаемо)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...