Предупреждение MSVC 4611 относительно setjmp w / POD struct

Попытка включить некоторые уровни предупреждений на базе кода C, которая также строится как C ++. Я даю Visual Studio шанс (по некоторым причинам).

Получил предупреждение о взаимодействиях setjmp, несмотря на отсутствие каких-либо соответствующих деструкторов. поэтому я сделал тест:

#include <setjmp.h>

struct X { int y; };

int main() {
struct X x;

jmp_buf buf;
if (setjmp(buf) == 0) {
longjmp(buf, 1);
} else {
// whatever.
}
}

Включение предупреждения в командной строке:

C:\wherever>cl /we4611 test.cpp

test.cpp
test.cpp (9): ошибка C4611: взаимодействие между ‘_setjmp’ и разрушением объекта C ++ непереносимо

Это кажется очень полезным предупреждением — если бы оно предупреждало меня о пересечении кода деструктора C ++. Но это тип POD. Там не должно быть никакого кода деструктора.

Я что-то здесь упустил, или они сделали это предупреждение таким образом, чтобы сделать его в основном «вы использовали setjmp в программе на C ++»?

2

Решение

они испортили это предупреждение до такой степени, чтобы сделать его в основном «вы использовали setjmp в программе на C ++»?

Похоже на то.

Я бы, наверное, сам отнес это к ошибке. Но это было легче внести предложение на сайте Microsoft. Предложения можно голосовать, там …

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]