2
#include <vector>
int main()
{
std::vector<int> v;
for (int x : v) do {} while (0);
}
編譯VS2013上的代碼將產生error C2059: syntax error : '}'
。但是,GCC可以成功編譯代碼。在基於範圍的循環和while循環同時使用時編譯VS2013錯誤
要重現錯誤,下列要求應滿足:
- 使用範圍爲基礎的循環;
- 不要用「{}」圍住for循環體;
- 在for循環體中編寫一個「do while」語句。
對此有何見解?
這是宏擴展的結果還是您如何發現該錯誤? – MikeMB
這是一些宏擴展的結果,如'do {blabla} while(0)' –