开发者

Visual studio 2008 not catching a syntax error

Visual studio 2008 isn't catching syntax errors. for example: Tpc_feed(void); compiles fine. this: Tpc_feed(void);;;;;;; compiles fine, but this Tpc_feed(void) catches an error. Are the extra semi-colons not synta开发者_运维百科x errors? I'm on Windows 7 32 bit and VS C++ 2008


Technically, it's a syntax error, but most compilers allow it anyway. GCC even allows it by default unless you compile with -pedantic.

In any case, it's against the standard so you should get rid of the extras.


Without a return type, none of them should compile as C++. Assuming a return type is added, the extra semicolons are allowed on member function declarations, but if the declarations are outside a class/struct they're prohibited.

I don't believe VC++ has a flag to force them to be flagged as errors.

Edit: Actually (going back and re-checking things), an unnecessary semi-colon is allowed following a member function definition, but I think you're right, and it's not allowed following a member function declaration.


As others have already said, it's not a valid C++. The reason why many compilers support it anyway is that it makes creating macros a bit easier/more intuitive, consider this:

// Declares a function, and because the semicolon belongs to the declaration, the macro adds it
#define MY_FUNCTION_DECL(returnType, arguments) returnType myFunction arguments;

// Calling macros looks like functions, the semicolon looks natural
MY_FUNCTION_DECL(void, (int, int, int));  // There are two semicolons now

This example is somewhat weird as I made it up right now but it should represent the idea behind accepting more semicolons as valid.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜