<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Isn't it safe to take the address of a global?<br><br><br>I have something like this:<br><br><br>CONST UID_INTEGER = 1234;<br>CONST UID_FLOAT = 4567;<br>  ... several more ...<br><br><br>TYPE CType = OBJECT .. END;<br><br><br>VAR t_int: CType := ...;<br>VAR t_float: CType := ...;<br>  ... several more ...<br><br><br>MapTypeIdToType(UID_INTEGER, t_int);<br>MapTypeIdToType(UID_FLOAT, FLOAT);<br>  ... several more ...<br><br><br>but what I really want is more like:<br><br><br>TYPE RECORD = BuiltinUid_t = <br>  typeid: INTEGER;<br>  ctype: REF CType;<br>END;<br><br><br>CONST BuiltinUids = ARRAY OF BuiltinUids {<br>  BuiltinUids{UID_INTEGER, &t_int},<br>  BuiltinUids{UID_FLOAT, &t_float},<br>  ... several more ...<br>};<br><br><br>FOR i := FIRST(BuiltinUids) TO LAST(BuiltinUids) DO<br>  MapTypeIdToType(BuiltinUids[i].typeid, BuiltinUids[i].ctype);<br>END;<br><br><br>Heck, even if these weren't global, is it that unreasonble,<br>from the programmer's point of view, for the language/compiler<br>to do some pointer escape analysis and let me take the address<br>of a local, as long as I don't store it somewhere that outlives<br>the local?<br><br><br>You can see this particular pattern currently in<br>m3-sys/m3cc/gcc/gcc/m3cg/parse.c<br><br><br>and I'm pretty busy now working on m3-sys/m3back/src/M3C.m3<br>where I encounter this.<br><br><br>Working in safe languages can be frustrating...<br><br><br>Thank you,<br> - Jay<br>                                    </div></body>
</html>