VC++2008 SP1 Как отключить C4706?
От: CoolCmd Россия  
Дата: 20.03.10 10:41
Оценка:
Добрый!
Как отключить warning C4706: assignment within conditional expression?
В свойствах проекта установлен уровень предупреждений Level 4 (/W4) и понижать его не хочу.

Делаю так:
#pragma warning(push)
#pragma warning(disable: 4706)
    int one = 1, two = 2;
    if (one = two)
    {
    }
#pragma warning(pop)

Все равно предупреждение вылезает.

Даже такой вариант не работает:
#pragma warning(push, 3)
    int one = 1, two = 2;
    if (one = two)
    {
    }
#pragma warning(pop)


Другие предупреждения, например С4127, отключаются без проблем.

24.03.10 16:36: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
простите, я убил небо
Re: VC++2008 SP1 Как отключить C4706?
От: Сергей Мухин Россия  
Дата: 20.03.10 10:54
Оценка: 3 (3)
Здравствуйте, CoolCmd, Вы писали:

CC>Как отключить warning C4706: assignment within conditional expression?

CC>В свойствах проекта установлен уровень предупреждений Level 4 (/W4) и понижать его не хочу.

Вынести перед ф-ией?

Вообще то странно, уровень варнингов большой ставим, а пишем такие программы. мб надо просто переписать этот if?
---
С уважением,
Сергей Мухин
Re[2]: VC++2008 SP1 Как отключить C4706?
От: CoolCmd Россия  
Дата: 20.03.10 12:33
Оценка:
Здравствуйте, Сергей Мухин, Вы писали:

СМ>Вынести перед ф-ией?

Не влияет.

СМ>Вообще то странно, уровень варнингов большой ставим, а пишем такие программы. мб надо просто переписать этот if?

Этот if стоит в макросах assert и VERIFY. Пробую заменить...
Автор: CoolCmd
Дата: 20.03.10


По-моему это глюк компилятора.
простите, я убил небо
Re[3]: VC++2008 SP1 Как отключить C4706?
От: Vain Россия google.ru
Дата: 20.03.10 13:57
Оценка:
Здравствуйте, CoolCmd, Вы писали:

СМ>>Вынести перед ф-ией?

CC>Не влияет.
СМ>>Вообще то странно, уровень варнингов большой ставим, а пишем такие программы. мб надо просто переписать этот if?
CC>Этот if стоит в макросах assert и VERIFY. Пробую заменить...
Автор: CoolCmd
Дата: 20.03.10

Вы ничего не путаете? Может это VERIFY стоит внутри if'а?
CC>По-моему это глюк компилятора.
не глюк
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[4]: VC++2008 SP1 Как отключить C4706?
От: achp  
Дата: 20.03.10 14:18
Оценка: -3
Здравствуйте, Vain, Вы писали:

V>не глюк


У меня складывается подозрение, что CoolCmd настолько новичок и настолько не читает книжки, что путает оператор присвоения «=» и оператор проверки на равенство «==». Или же он долго писал на каком-то языке, в котором для проверки на равенство используется «=».

По крайней мере, иначе объяснить его недоумение я не могу.
Re[3]: VC++2008 SP1 Как отключить C4706?
От: Сергей Мухин Россия  
Дата: 20.03.10 16:50
Оценка:
Здравствуйте, CoolCmd, Вы писали:

CC>По-моему это глюк компилятора.


Покажите, желательно минимальный, полный пример, где проявляется это.
---
С уважением,
Сергей Мухин
Re[2]: VC++2008 SP1 Как отключить C4706?
От: CoolCmd Россия  
Дата: 20.03.10 17:08
Оценка:
Здравствуйте, Сергей Мухин, Вы писали:

СМ>Вынести перед ф-ией?

Да, точно, внутри функций не работает. Спасибо.
простите, я убил небо
Re: VC++2008 SP1 Как отключить C4706?
От: yatagarasu Беларусь  
Дата: 24.03.10 12:48
Оценка: 1 (1) +1
Здравствуйте, CoolCmd, Вы писали:

CC>Добрый!

CC>Как отключить warning C4706: assignment within conditional expression?
CC>В свойствах проекта установлен уровень предупреждений Level 4 (/W4) и понижать его не хочу.

CC>Делаю так:

CC>
CC>#pragma warning(push)
CC>#pragma warning(disable: 4706)
CC>    int one = 1, two = 2;
CC>    if (one = two)
CC>    {
CC>    }
CC>#pragma warning(pop)
CC>

CC>Все равно предупреждение вылезает.

CC>Даже такой вариант не работает:

CC>
CC>#pragma warning(push, 3)
CC>    int one = 1, two = 2;
CC>    if (one = two)
CC>    {
CC>    }
CC>#pragma warning(pop)
CC>


CC>Другие предупреждения, например С4127, отключаются без проблем.


Это же классический

//#pragma warning(push)
//#pragma warning(disable: 4706)
    int one = 1, two = 2;
    if ((one = two) != 0)
    {
        }
//#pragma warning(pop)
Re: VC++2008 SP1 Как отключить C4706?
От: Caracrist https://1pwd.org/
Дата: 29.03.10 08:33
Оценка:
Здравствуйте, CoolCmd, Вы писали:

CC>Добрый!

CC>Как отключить warning C4706: assignment within conditional expression?

if (!!(one = two))
{
}

~~~~~
~lol~~
~~~ Single Password Solution
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.