- 
	- предупреждения, когда выкидывается кусок кода, можно использовать только когда программа из десяти строк :=)  koyodza(158 знак., 11.05.2011 23:42)
			- Не вижу связи с размером. Если действие в программе написано, а в код не пошло, тут по-моему однозначно что-то не так. Причем не соптимизировалось, а именно совсем не пошло. От этой функции, например, останется только return:  Kit(114 знак., 12.05.2011 00:35)
					- связь с размером в том, что в проекте даже на пару тысяч строк варнинг о выбрасывании куска просто сведёт с ума - koyodza(12.05.2011 16:20)
- Такое весьма часто случается при использовании сравнительно универсальных #define и констант при их вызове AlexBi(65 знак., 12.05.2011 09:59)
- Какая ужасная функция. Я бы её тоже заоптимизировал в ноль. И штраф автору назначил, с отбыванием в колонии строгого режима :-) Смотреть надо не на код, а на результат выполнения программы. - SciFi(12.05.2011 00:38)
							- А если это получилось в результате ошибки, тоже в колонию?:) - Kit(12.05.2011 01:03)
									- В результате какой ошибки? Что хотелось сделать то? - Vladimir Ljaschko(12.05.2011 09:37)
 
 
- А если это получилось в результате ошибки, тоже в колонию?:) - Kit(12.05.2011 01:03)
									
 
 
- Не вижу связи с размером. Если действие в программе написано, а в код не пошло, тут по-моему однозначно что-то не так. Причем не соптимизировалось, а именно совсем не пошло. От этой функции, например, останется только return:  Kit(114 знак., 12.05.2011 00:35)
					
- А не утоните в предупреждениях? Завели временную переменную, а компилятор ее выбросил - получи предупреждение. И как вы представляете себе volatile директивой?  Cepгeй Бopщ(114 знак., 11.05.2011 17:10)
			- Да, оптимизатор иногда задалбывает вместе с предупреждениями. Особенно "любимая" ситуация - нужно прочитать регистр периферии "в никуда". И начинается... То просто предупреждение, что переменная не используется после присвоения, то еще хуже - vmp(181 знак., 12.05.2011 17:39)
- Я написал "кусок кода", очевидно, что на a=b предупреждений дывать не надо. У меня и написано, что "приходится в другие переменные перекидывать", только это неудобно. А директиву я себе представляю очень просто:  Kit(72 знак., 11.05.2011 22:34)
					- То есть, в этом месте переменная XXX может быть изменена вне данного кода а в других местах такое не возможно? - Vallav(12.05.2011 08:32)
							- Именно так - Kit(12.05.2011 12:31)
									- Возможно, что-то такое может сработать: SciFi(163 знак., 12.05.2011 15:05)
- Так чем вариант не устраивает - ввести временную переменную там, где нужна оптимизированная обработка значения XXX, Vallav(398 знак., 12.05.2011 14:56)
 
 
- Именно так - Kit(12.05.2011 12:31)
									
- Замечательно. И будет оно читать ячейку XXX до потери сознания, ибо в том месте, где XXX надо было записать вы обрамить забудите. Cepгeй Бopщ(298 знак., 12.05.2011 02:26)
- лучше временными переменными оперировать поактивнее  koyodza(254 знак., 11.05.2011 23:00)
							- И как у Вас xx может измениться вне данного кода во время исполнения while? - Vallav(12.05.2011 08:37)
									- В обработчике прерывания - Kit(12.05.2011 12:33)
											- А адрес xx обработчик прерывания как узнает? Vallav(113 знак., 12.05.2011 14:46)
 
 
- В обработчике прерывания - Kit(12.05.2011 12:33)
											
- в данном случае xx - локальная и смысла в volatile не вижу. Хотя вот volatile int *xx=&x, может и интересно, надо подумать.  Kit(39 знак., 11.05.2011 23:26)
									- смысл локальной volatile в том, что доступ к ней не будет оптимизироваться  koyodza(180 знак., 11.05.2011 23:38)
											- Это понятно, только зачем бы оно могло понадобиться, чтобы кусок кода не снесло? Так IAR на это уже не ведётся:)   Kit(435 знак., 12.05.2011 00:39)
													- "Можно пользоваться временными переменными, но неудобно" - ага, а прагмы в тех же местах лепить по две удобнее. - Cepгeй Бopщ(12.05.2011 02:29)
- while отличается от for тем, что кроме while() может быть еще и do {...} while(); - rezident(12.05.2011 00:43)
															- Так и думал, что напомните:)  Kit(70 знак., 12.05.2011 00:53)
																	- А зачем выдумывать лишние сущности? for всегда с пред-проверкой условия. Так в стандарте C99 указано.   rezident(165 знак., 12.05.2011 01:14 - 01:17)
																			- Это гипотетически:) Kit(219 знак., 12.05.2011 02:41)
 
 
- А зачем выдумывать лишние сущности? for всегда с пред-проверкой условия. Так в стандарте C99 указано.   rezident(165 знак., 12.05.2011 01:14 - 01:17)
																			
 
- Так и думал, что напомните:)  Kit(70 знак., 12.05.2011 00:53)
																	
 
 
- Это понятно, только зачем бы оно могло понадобиться, чтобы кусок кода не снесло? Так IAR на это уже не ведётся:)   Kit(435 знак., 12.05.2011 00:39)
													
 
- смысл локальной volatile в том, что доступ к ней не будет оптимизироваться  koyodza(180 знак., 11.05.2011 23:38)
											
 
- И как у Вас xx может измениться вне данного кода во время исполнения while? - Vallav(12.05.2011 08:37)
									
- Вообще-то в том же IAR есть #pragma optimize=[goal][level][no_optimization...] - rezident(11.05.2011 22:47)
							- Я в курсе, но полностью отключить оптимизацию куску кода для того, чтобы одна переменная вела себя правильно, это совсем не то, чего хотелось бы. - Kit(11.05.2011 23:00)
									- Язык программирования отличается от человеческих языков только тем, что результатом компиляции с него является машинный код для процессора. Но, как и в случае общения между людьми, компилятору иногда тоже нужны дополнительные пояснения: что именно  rezident(114 знак., 11.05.2011 23:07)
											- Не вижу, где-бы это я противоречил столь очевидной истине. Я только говорю, что слов для объяснения не хватает:) - Kit(11.05.2011 23:28)
													- возможно, Вы просто не все слова выучили ;=)  koyodza(99 знак., 11.05.2011 23:39)
															- Возможно:) - Kit(12.05.2011 01:02)
 
 
- возможно, Вы просто не все слова выучили ;=)  koyodza(99 знак., 11.05.2011 23:39)
															
 
- Не вижу, где-бы это я противоречил столь очевидной истине. Я только говорю, что слов для объяснения не хватает:) - Kit(11.05.2011 23:28)
													
 
- Язык программирования отличается от человеческих языков только тем, что результатом компиляции с него является машинный код для процессора. Но, как и в случае общения между людьми, компилятору иногда тоже нужны дополнительные пояснения: что именно  rezident(114 знак., 11.05.2011 23:07)
											
 
- Я в курсе, но полностью отключить оптимизацию куску кода для того, чтобы одна переменная вела себя правильно, это совсем не то, чего хотелось бы. - Kit(11.05.2011 23:00)
									
 
- То есть, в этом месте переменная XXX может быть изменена вне данного кода а в других местах такое не возможно? - Vallav(12.05.2011 08:32)
							
- +1. Я так и делаю. Кстати, такой способ позволяет наоборот избежать "лишних" предупреждений в том случае, когда в операции используются больше одной volatile-переменных. При использовании двух или большего количества volatile, например, в rezident(105 знак., 11.05.2011 17:24)
 
 
- предупреждения, когда выкидывается кусок кода, можно использовать только когда программа из десяти строк :=)  koyodza(158 знак., 11.05.2011 23:42)