История изменений
Исправление Stanson, (текущая версия) :
Я вот недавно удивлялся, почему в case указатели нельзя использовать.
Прекрасно можно использовать. Просто в case же придётся писать константы, т.е. конкретные адреса, которые, очевидно, на момент написания программы неизвестны. Однако, если речь о заранее известных на момент компиляции адресах регистров или фиксированных областях типа каких-нибудь векторов прерываний, то всё прекрасно пишется, компилируется и работает.
Строковые константы вполне может обрабатывать компилятор на этапе компиляции и соответственно использовать strcmp, например, для сравнения.
Но это не больше чем синтаксический сахар, просто чтобы вместо лесенок с strcmp и скобкотой писать несколько более удобочитаемые case, только и всего.
Ну и switch() это не синтаксический сахар над каскадными if-ами, если что, а штука для использования таблиц переходов. Со строками это опять же невыполнимо.
Да неужели. Таблицы переходов со строками ещё в софте для ZX Spectrum использовались как нефиг делать. Да и case далеко не всегда в таблицы переходов компилируется.
Исправление Stanson, :
Я вот недавно удивлялся, почему в case указатели нельзя использовать.
Прекрасно можно использовать. Просто в case же придётся писать константы, т.е. конкретные адреса, которые, очевидно, на момент написания программы неизвестны. Однако, если речь о заранее известных на момент компиляции адресах регистров или фиксированных областях типа каких-нибудь векторов прерываний, то всё прекрасно пишется, компилируется и работает.
Строковые константы вполне может обрабатывать компилятор на этапе компиляции и соответственно использовать strcmp, например, для сравнения.
Но это не больше чем синтаксический сахар, просто чтобы вместо лесенок с strcmp и скобкотой писать несколько более удобочитаемые case, только и всего.
Ну и switch() это не синтаксический сахар над каскадными if-ами, если что, а штука для использования таблиц переходов. Со строками это опять же невыполнимо.
Да неужели. Таблицы переходов со строками ещё в софте для ZX Spectrum использовались как нефиг делать.
Исходная версия Stanson, :
Я вот недавно удивлялся, почему в case указатели нельзя использовать.
Прекрасно можно использовать. Просто в case же придётся писать константы, т.е. конкретные адреса, которые, очевидно, на момент написания программы неизвестны. Однако, если речь о заранее известных на момент компиляции адресах регистров или фиксированных областях типа каких-нибудь векторов прерываний, то всё прекрасно пишется, компилируется и работает.
Строковые константы вполне может обрабатывать компилятор на этапе компиляции и соответственно использовать strcmp, например, для сравнения.
Но это не больше чем синтаксический сахар, просто чтобы вместо лесенок с strcmp и скобкотой писать несколько более удобочитаемые case, только и всего.