[cfe-dev] Why this extern "C" fails ?
Arji Cot
arjicot at gmail.com
Mon Jul 29 22:44:44 PDT 2013
"extern symbols should be in a global scope"
Can you provide a reference for this statement ?
2013/7/29 Renato Golin <renato.golin at linaro.org>
> On 29 July 2013 14:56, Arji Cot <arjicot at gmail.com> wrote:
>
>> --------------
>>
>> #include <iostream>
>>
>> int main() {
>> {
>> extern "C" { int a = 42; }
>> { std::cout << a << "\n"; }
>> }
>> return (0);
>> }
>
>
> Hi Arji,
>
> As Olafur said, extern symbols should be in a global scope, and that "a"
> couldn't even be seen from the next line, and you'd see another error from
> the compiler if you removed the extern.
>
>
> main.cpp:5:12: error: expected unqualified-id
>> extern "C" { int a = 42; }
>> ^
>> 1 error generated.
>>
>> It's not enough to me to explain why this is not working.
>>
>
> Every compiler error assumes familiarity with the language, at least
> enough to go and look at the definition of the terms involved in the error
> message (extern "C" in this case) in a book, on the web or the standard,
> which should give you enough information on how to fix the bug.
>
> Compilers are famous for not giving enough information on error messages,
> and Clang stands out as being one of the best on that side, but no compiler
> will ever teach you the language via error messages.
>
> One rule of thumb is to use a different compiler and see if it also gives
> you an error, maybe a different error, or a better error message, or none
> at all. If you find that other compilers can handle your code and Clang
> cannot, maybe Clang is wrong (in which you should fill a bug), or maybe the
> other compiler is wrong at accepting your code, (in which you should file a
> bug in the other compiler). However, if the error is the same (which it is
> in GCC), than there's little you can ask the Clang community to do
> something.
>
> As for learning C++, I suggest you buy Stroustroup's "The C++ Programming
> Language", read it cover to cover, and have it as your faithful companion
> for such cases, or use comp.lang.c++ for when you can't find the answer
> yourself, but Clang's list is really not the place for that level of
> discussion.
>
> cheers,
> --renato
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130730/e167234a/attachment.html>
More information about the cfe-dev
mailing list