命名结构与未命名结构的类型别名

时间:2018-02-01 09:18:26

标签: c++ struct compiler-errors

在C ++中,它在语义上等同于具有命名结构

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>update page</title>
</head>
<body>
<?php
    use Cct\CharlesGoodNight\Data\Data;
    if ($username == $accounts[0]->user_name && $password == $accounts[0]->user_pass)
    {
       echo 'Correct username and password';
    }
    else
    {
       echo '<script>window.location.href="https://ct.org/login-gun-page-updates/?message=error"</script>'; 
    }
?>
  <form action="" method="POST">
    <label class="update_heading"> UPDATE GUN DRAWING TICKETS </label>
    <a href='https://ct.org/logout-gunpage-update-form/' class="logout_link" > Logout</a><br>
    <label for="update" class="update"> Update Number: </label>
    <input type="textbox" id="ticketsavailable" name="ticketsavailable" value="<?php echo $ticketleft[0]->ticket_available; ?>"/>
    <br><br>
    <input type="submit" name="save" value="Submit">
 </form>

</body>
</html>

VS。未命名结构的类型别名

struct S { int x; };

使用S的第一个版本或第二个版本是否有任何差异,或者这些变体是否可以完全互换?或者某些编译器很可能与第二个版本有问题?

1 个答案:

答案 0 :(得分:0)

在C ++ 11中引入了具有该上下文的using关键字,这意味着使用C ++ 98标准的旧编译器将无法编译它。

您也无法转发声明您的结构。

因此,它们并非100%等同;但在某些情况下,使用可以取代通常的声明。