Visual Studio 2008没有捕捉到语法错误。例如:Tpc_feed(void);
编译正常。 这个:Tpc_feed(void);;;;;;;
编译正常,但是这个Tpc_feed(void)
发现错误。额外的分号不是语法错误吗?我在Windows 7 32位和VS C++ 2008Visual Studio 2008没有捕捉到语法错误
回答
从技术上讲,这是一个语法错误,但大多数编译器都允许它。除非您使用-pedantic
进行编译,否则GCC甚至会默认它。
无论如何,这是违反标准,所以你应该摆脱额外。
我知道我应该删除它们,但为什么编译器允许它? – TheFuzz 2010-08-25 18:07:01
谁知道?编译器并不完美。 (1)对正确的程序没有影响,(2)很容易猜测编码者打字时的意图是什么。 – zildjohn01 2010-08-25 18:22:18
没有返回类型,它们都不应该编译为C++。假设添加了返回类型,则在成员函数声明中允许使用额外的分号,但如果声明位于类/结构之外,则它们将被禁止。
我不相信VC++有一个标志强制他们被标记为错误。
编辑:其实(回去和重新检查的东西),不必要的分号允许以下成员函数定义,但我认为你是对的,这是不允许以下成员函数声明。
它的我的类构造函数,所以不编译为C++? – TheFuzz 2010-08-25 18:20:45
噢,好的 - 是的,ctor不需要(并且实际上不能)指定返回类型。我很抱歉。 – 2010-08-25 18:43:08
正如其他人已经说过,这不是一个有效的C++。为什么许多编译器支持也无妨的原因是,它使创建的宏更容易一点/更直观,可以这样考虑:
// 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
这个例子有点怪异,因为我和好了,但现在它应该背后代表的想法接受更多分号作为有效。
- 1. 捕捉语法错误
- 2. 有没有办法在Visual Studio中捕捉stderr和stdout?
- 3. 如何捕捉python语法错误?
- 4. Visual Studio 2008在编码时没有检测到错误
- 5. Visual Studio 2008生成错误
- 6. Visual Studio 2008 SSIS错误
- 7. Visual Studio 2008安装错误
- 8. Visual Studio 2008中的错误
- 9. 没有C在Visual Studio 2008
- 10. Visual Studio 2008的结构命名语法涉及错误“2dpt”
- 11. MySQL EXIT HANDLER没有捕捉到所有的错误?
- 12. Visual Studio 2008中生成失败,并没有错误输出
- 13. Visual Studio 2008项目不会加载,但没有错误
- 14. 如何在Visual Studio 2008 C++中捕获零除错误?
- 15. Visual Studio的C++/CLI语法错误
- 16. 捕捉MySQL错误
- 17. 捕捉mysql_query错误
- 18. 错误捕捉webexception
- 19. 承诺没有正确捕捉到错误NodeJS
- 20. Visual Studio 2008语法着色问题
- 21. Visual Studio 2008的语法检查
- 22. ViewPager没有捕捉
- 23. 控件在Visual Studio 2010中的捕捉
- 24. 我得到了 “构建失败” 在Visual Studio 2008,并没有错误
- 25. Visual Studio 2010在尝试调试时给了我语法错误,但没有语法错误!
- 26. MVC - Visual Studio 2010编译没有错误
- 27. Visual Studio 2008显式引用错误
- 28. 安装Visual Studio 2008时发生错误
- 29. Visual Studio 2008的MFC链接错误
- 30. Visual Studio 2008中的错误:ATL
语法规则需要分号。连续的分号意味着空白的代码行,编译器会忽略这些代码行 – Rahul 2010-08-25 18:17:28