循环内部不允许返回,因为它会导致花括号前退出.
请注意下面给出的定义:
从OpenMP V2.5规范,1.2.2 OpenMP语言术语,p2:17-
structured block – For C/C++, an executable statement, possibly
compound, with a single entry at the top and a single exit at the
bottom.
结构化块以open {开头,以结束}结束.返回包含在这些大括号中,因此该程序也违反了结构化块的OpenMP定义,因为它有两个出口(一个在返回处,一个在出口处通过大括号)
OpenMP对可以线程化的循环放置以下五个限制:
>循环变量必须是有符号整数类型.无符号整数,如DWORD的,将无法正常工作.>比较操作必须采用loop_variable的形式,或> = loop_invariant_integer> for循环的第三个表达式或增量部分必须是整数加法或整数减法和循环不变的价值.>如果比较操作是或> =,循环变量必须减少每一个迭代.>循环必须是一个基本块,意味着不会从内部跳转除退出外,允许循环到外部声明,终止整个应用程序.如果是陈述使用goto或break,它们必须在循环内跳转,而不是在外面它.异常处理也是如此;必须抓住例外循环内.