<HTML><HEAD><TITLE>Samsung Enterprise Portal mySingle</TITLE>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
<STYLE id=mysingle_style type=text/css>P {
        MARGIN-TOP: 5px; FONT-FAMILY: Arial, arial; MARGIN-BOTTOM: 5px; FONT-SIZE: 9pt
}
TD {
        MARGIN-TOP: 5px; FONT-FAMILY: Arial, arial; MARGIN-BOTTOM: 5px; FONT-SIZE: 9pt
}
LI {
        MARGIN-TOP: 5px; FONT-FAMILY: Arial, arial; MARGIN-BOTTOM: 5px; FONT-SIZE: 9pt
}
BODY {
        LINE-HEIGHT: 1.4; MARGIN: 10px; FONT-FAMILY: Arial, arial; FONT-SIZE: 9pt
}
</STYLE>

<META name=GENERATOR content=ActiveSquare></HEAD>
<BODY>
<P> </P>
<P>If we declare a var inside a function that would be stack variable whose address can't be decided by linker. But extern "C" is like stating if some C code wants to use this variable don't demangle name so that this var can be found by other C compilation units during linking.</P>
<P> </P>
<P>In short making a portion inside a function as extern "C" and trying to expose a stack variable to other compilation units is incorrect usage.</P>
<P> </P>
<P>------- <B>Original Message</B> -------</P>
<P><B>Sender</B> : Arji Cot<arjicot@gmail.com></P>
<P><B>Date</B> : Jul 30, 2013 11:13 (GMT+05:30)</P>
<P><B>Title</B> : Re: [cfe-dev] Why this extern "C" fails ?</P>
<P> </P>1 ) this works flawlessly, and as far as I know C and C++ have the same rules for scoping<BR><BR>#include <iostream><BR><BR>int main() {<BR>  {<BR>    int a = 42;<BR>    { std::cout << a << "\n"; }<BR>  }<BR>  return (0);<BR>}<BR><BR>also the C equivalent version works great too<BR><BR>#include <stdio.h><BR><BR>int main() {<BR>  {<BR>    int a = 42;<BR>    { printf("\n%d\n", a); }<BR>  }<BR>  return (0);<BR>}<BR><BR>So my point is: as far as the scoping rules are involved in this, they don't have any role in this error.<BR><BR>2 ) Why the external linkage of a var x should necessarily imply that the var x must be used or accessed in any way ?<BR><BR>In other words I can't see this strict relation and this constrain with an extern "C".<BR><BR>
<DIV class=gmail_quote>2013/7/29 SENTHIL KUMAR THANGAVELU <SPAN dir=ltr><<A href="mailto:senthil.t@samsung.com" target=_blank>senthil.t@samsung.com</A>></SPAN><BR>
<BLOCKQUOTE style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class=gmail_quote>
<DIV>
<P> </P>
<P>As I understand 2 potential issues could be here</P>
<P>1) 'a' maynot be visible to the second '{ }' block containing std::cout</P>
<P>2) Asking for extern "C" linkage for a stack variable, implying there is some C code which needs to see this stack variable</P>
<P> </P>
<P>------- <B>Original Message</B> -------</P>
<P><B>Sender</B> : Arji Cot<<A href="mailto:arjicot@gmail.com" target=_blank>arjicot@gmail.com</A>></P>
<P><B>Date</B> : Jul 29, 2013 19:26 (GMT+05:30)</P>
<P><B>Title</B> : [cfe-dev] Why this extern "C" fails ?</P>
<DIV class=im>
<P> </P><SPAN style="FONT-FAMILY: courier new,monospace">--------------<BR><BR>#include <iostream><BR><BR>int main() {<BR>  {<BR>    extern "C" { int a = 42; }<BR>    { std::cout << a << "\n"; } <BR>  }<BR>  return (0);<BR>}</SPAN><BR><BR><SPAN style="FONT-FAMILY: courier new,monospace">--------------<BR><BR>this code fails to compile and the compiler message alone<BR><BR>main.cpp:5:12: error: expected unqualified-id<BR>    extern "C" { int a = 42; }<BR>           ^<BR>1 error generated.<BR><BR>It's not enough to me to explain why this is not working.<BR><BR>There is something that I'm missing ?<BR></SPAN>
<P> </P>
<P> </P></DIV>
<P>Regards</P>
<P>Senthil Kumar</P>
<P> </P>
<P> </P>
<TABLE>
<TBODY>
<TR>
<TD>
<P><IMG border=0 src="cid:QKNMBDIFBEI0@namo.co.kr" width=520></P></TD></TR></TBODY></TABLE></DIV><IMG border=0 src="" width=0 height=0></BLOCKQUOTE></DIV><BR>
<P> </P>
<P> </P><!--SP:senthil.t-->
<P>Regards</P>
<P>Senthil Kumar</P>
<P> </P><!--senthil.t:EP-->
<P> </P>
<TABLE id=confidentialsignimg>
<TBODY>
<TR>
<TD NAMO_LOCK>
<P><IMG border=0 src="cid:7EUABGFC2LL5@namo.co.kr" width=520></P></TD></TR></TBODY></TABLE></BODY></HTML><img src='http://ext.samsung.net/mailcheck/SeenTimeChecker?do=3ad779e51222955094fea88455ed877e68334652d8ac28cd9cdd14f0554fc2de1d78c8484d0968ef1d70666c366810d91b20909a04efd4d2748cfe1d4e847419cf878f9a26ce15a0' border=0 width=0 height=0 style='display:none'>