Вопрос про таблицу строк и про функции scanf и printf

Тема в разделе "LANGS.C", создана пользователем Antolflash, 19 янв 2010.

  1. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    То есть в С++ нельзя использовать исключения и RTTI, поскольку их поддержка регулируется ключами? =)

    Что такое "правильно написанная программа"? :) В С++ есть понятие well-formed, в С такого нет. Программа падает совершенно правильно по стандарту поведение не определено ;) Я честно выполнил просьбу почитать стандарт, наверное я плохо это сделал? Значит покажи ошибку.
     
  2. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Правильно написанная - значит написанная по стандарту.
    Если стандартом поведение не определено - лучше не использовать.
    Я абсолютно точно могу сказать, что есть компиляторы на которых мой пример будет падать даже с обычными ключами сборки.
    RTTI есть в стандарте? Насколько я знаю - нету.
    Хотя могу ошибаться, на плюсах не пишу.
     
  3. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    cppasm
    а зачем тогда назвался cppasm?
     
  4. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    За шкафом :b
    Когда назывался это были четыре языка которые мне более/менее нравились.
    Я не сказал что плюсов не знаю, из ООП мне наверное больше всего они нравятся.
    Просто ООП не люблю в принципе -> пишу на нём мало -> тонкости стандарта знаю не все.
     
  5. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    Читал ли ты стандарт? RTTI там разумеется есть, как и исключения. ВЦ позволяет это отключить и это будет нестандартно уже. Это к тому что поведение компиляторов с какими-то ключами не является доказательством того что то есть или нет в стандарте.

    Согласно стандартам присваивание строковому литералу различается в языках С и С++. В последнем это явно нельзя.

    Да и кстати ООП в плюсах по тому же стандарту нет, например STL не ОО. ООП можно изобразить если захотеть, как и многое другое.
     
  6. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Я ж написал выше - на плюсах мало пишу, стандарт досконально не знаю.
    Прямых упоминаний RTTI или run-time type information поиском не нашёл.
    А всё перечитывать желания нету.
    Сишный стандарт знаю, но он тут не при чём :)

    Кстати мой пример скомпилированный в режиме плюсов тоже работает.
    Что уже абсолютно точно противоречит стандарту, потому что в С++ строки состоят из const char, и соответственно в них писать точно нельзя.
     
  7. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    Про RTTI cм 2.11 Keywords: typeid & dynamic_cast. А так же 18.5 Type identification.

    Про то почему компилируется в С++ см в низу мой пост №18 или 4.2 Array-to-pointer conversion пункт 2:
    A string literal (2.13.4) that is not a wide string literal can be converted to an rvalue of type “pointer to
    char”; a wide string literal can be converted to an rvalue of type “pointer to wchar_t”. In either case,
    the result is a pointer to the first element of the array. This conversion is considered only when there is an
    explicit appropriate pointer target type, and not when there is a general need to convert from an lvalue to an
    rvalue. [Note: this conversion is deprecated. See Annex D. ] For the purpose of ranking in overload resolution
    (13.3.3.1.1), this conversion is considered an array-to-pointer conversion followed by a qualification
    conversion (4.4). [Example: "abc" is converted to “pointer to const char” as an array-to-pointer conversion,
    and then to “pointer to char” as a qualification conversion. ]
     
  8. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    Если знаешь стандарт С (я знаю плохо) покажи плиз где написано что нельзя менять строковый литерал который lvalue :)
     
  9. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Там нет такого. Написано поведение не определено. Т.е. можно, но не желательно.