Может оптимизация компилятора удалять бесконечные циклы, который не делает изменяет любые данные, как
while(1)
/* noop */;
От анализа компилятора графика потока данных может произойти, что такой цикл является "мертвым кодом" без любых побочных эффектов.
Удаление бесконечных циклов запрещается стандартами C90/C99?
C90 или стандарты C99 разрешают компилятор к удалению таких циклов?
Upd: "Версия 6.0 Microsoft C сделала по существу эту оптимизацию". см. ссылку caf.
label: goto label;
return 0;
будет преобразован к
return 0;
Это необходимость при написании демонов. Почему вы хотите назвать их мертвым кодом?
Структура не является мертвым кодом, оно в основном предотвращает просмотр программы когда-либо достигнув все возможное. Это не то, что произойдет, если цикл был удален, поэтому компилятор не может удалить петлю.
Это может заменить его, зависящее от платформы бездействующей инструкции, чтобы сигнализировать процессор, который нить не собирается ничего не делать.
Что может сделать компилятор, - это удалить любой код, который поставляется после цикла, потому что оно недоступен и никогда не будет выполнен.
Думаю, вместо этого вы должны написать
C:\svn\bin>svn mkdir svn://localhost/myproject -m "some msg" --username user1 --password pass1 svn:
, ваш пароль кажется неправильным.
-121--4780148-Рассмотрим, что произойдет, если в ваших играх будет первый игрок - команда (выбранная из списка команд) и второй игрок - компьютер (выбранная из списка компьютеров):
Если заменить «компьютер» в качестве игрока другой «командой», вы получите два внешних ключа в таблицу команд.
Мой JPA немного ржавый, но я полагаю, что вы моделируете отношения внешнего ключа с аннотацией @ OneToOne
, например, так:
@OneToOne(cascade = {CascadeType.ALL}, optional = false)
@JoinColumn(name = "team1")
и второй с:
@OneToOne(cascade = {CascadeType.ALL}, optional = false)
@JoinColumn(name = "team2")
-121--3159647- Нет пути обнаружить бесконечные циклы повсеместно: см. Остановка проблемы . Так что лучшее, что мог сделать любой компилятор, - это взять приличную догадку - например, очевидный случай, упомянутый в ОП.
Но почему это было бы желательно? Я мог видеть, излучая предупреждение и все еще разрешая поведение, но удалить цикл - это не «оптимизация» - это меняет поведение программы!
Это обсуждалось много раз ранее на COMP.LANG.C
(например, здесь ) без, насколько я знаю, любой консенсус исход.