while ((R_SPI2SR & B_SPIF) != B_SPIF)
{
SERIAL_SERVICE_WDOG;
};
while ((R_SPI2SR & B_SPIF) != B_SPIF)
{
SERIAL_SERVICE_WDOG;
}
Я хотел бы знать, что это цель поставить точку с запятой ..Любая разница между этими двумя циклами?
while ((R_SPI2SR & B_SPIF) != B_SPIF)
{
SERIAL_SERVICE_WDOG;
};
while ((R_SPI2SR & B_SPIF) != B_SPIF)
{
SERIAL_SERVICE_WDOG;
}
Я хотел бы знать, что это цель поставить точку с запятой ..Любая разница между этими двумя циклами?
только отличается в коде дополнительная точка с запятой. , но скомпилированная сборка такая же.
Точка с запятой после первого цикла не является частью этого цикла. Он интерпретируется как полностью независимый пустой оператор, который сидит между петлями. То есть ваши фактические петли считаются абсолютно идентичными с помощью языка C.
Заявление, выполняемое циклом while, представляет собой составной оператор внутри фигурных скобок. Точка с запятой - это просто пустое заявление. Вы могли бы написать этот цикл как:
while ((R_SPI2SR & B_SPIF) != B_SPIF)
SERIAL_SERVICE_WDOG;
поскольку Составной оператор только имеет один оператор внутри него, или как
while ((R_SPI2SR & B_SPIF) != B_SPIF)
{
SERIAL_SERVICE_WDOG;;;;;;;;;;;;;;;
};;;;;;;;;;;;;;
который, конечно, ужасный стиль.
Пустая инструкция используется, когда у вас есть цикл, который не нуждается в теле.
/* Throw away remaining characters up to the end of line. */
while ((c = getchar()) != '\n')
;
Вы хотите, чтобы следить за классическую ошибку окончания цикла преждевременно:
int i = 1;
int j = 1;
while (i < 10); /* The semicolon here ends the loop... */
j *= i++; /* ... so this statement is only executed once. */
Ненужной запятая просто беспорядок, так что вы никогда не должны использовать их.