Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2005-07-18 15:11:43


"Andy Little" <andy_at_[hidden]> writes:

> "Dave Steffen" <dgsteffen_at_[hidden]> wrote
>> Arkadiy Vertleyb writes:
>> > Hi all,
>> >
>> > Not having extra semicolons is one of the strongest arguments
>> > against incuding a trailing semicolon into a statement-generating
>> > macro. Can anybody explain why having an extra semicolon is
>> > considered a potential problem by some compilers? Isn't null as
>> > good as any other number? Shouldn't an empty statement be
>> > considered as good as any other statement?
>>
>> Ths issue is IIRC and AFAIK macros that are used outside of any
>> statement blocks, i.e. the thing David Abrahams suggested that
>> spawned this whole thread. Something like a macro that declares or
>> defines a function:
>>
>> #define MAKEFOO inline void foo () { ... }
>>
>> and then simply used as:
>>
>> (... other inline functions, for example ...)
>> MAKEFOO;
>
>
> FWIW This compiles fine in VC7.1 . AFAIK there is no C++ rule
> banning an empty statement in any scope( including namespace scope)
> where a statement is otherwise allowed.

But that's just it: statements aren't allowed at namespace scope.

Comeau C/C++ 4.3.3 (Aug 6 2003 15:13:37) for ONLINE_EVALUATION_BETA1
Copyright 1988-2003 Comeau Computing. All rights reserved.
MODE:strict errors C++

"ComeauTest.c", line 2: error: extra ";" ignored,
        In C: A function definition does not end with a semicolon
        In C++: A function definition, extern "C" or namespace, does not end with a semicolon
   MAKEFOO;
          ^

1 error detected in the compilation of "ComeauTest.c".

In strict mode, with -tused, Compile failed

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk