Углубленное понимание C ++ 11 Чтение заметок

Для обеспечения стабильности и совместимости двух
совместимости с подпорной C99

Предопределенные макросы
стандартного языка C99 добавляют некоторые предопределенные макросы, C ++ 11 также добавляет поддержку для этих макросов

  • __func__ предопределенный идентификатор

  Если имя функции функции возвращается, С ++ 11, стандарт даже позволяет его использование в структуре класса или

  • оператор _Pragma

  C стандарт / C ++, директива # Прагма является предварительная обработка, часть информации , чтобы передать вне стандартных компиляторов языка, например , #pragma раз указывает на то, что файл заголовка должен быть составлен только один раз
  определены в стандарте C ++ 11 функции #pragma предварительной обработки с тем же оператором _Pragma, например , _Pragma ( «один раз»);

  • Определения макросов и параметров __VA_ARGS__ переменной длины

  В стандарте C99, переменная длина параметры макро определения относится к последнему параметру списка параметров Макроопределение заменено многоточию эллипсов, а заданное __VA_ARGS__ достичь некоторых предопределенных макросов в макро может быть определена , чтобы представить строку
  #define PR (...) Е (__ VA_ARGS__ )

 

  • Подключение ширины строки

  Стандарт C ++, преобразование узкой строки (символов) в строку широких (wchar_t) поведение не определено
  в стандарте C ++ 11, когда узкой и широкой строки Строка соединения, строка будет узкая преобразуется в строку широких, а затем соединяется с широкой строки

 

 

Макро __cpluscplus__

   C и C ++ заголовочных файлов сочетание обычного использования

. 1  #ifidef в __cplusplus
 2  экстерном  " C " {
 . 3  #endif 
. 4  // некоторый код 
. 5  #ifdef в __cplusplus
 . 6  }
 . 7  #endif

 

   В C ++ 11   __cplusplus определяется как 201103L быть использован для обнаружения ли поддержка C ++ 11

#if в __cplusplus <201103L
     #error "Если РЕАЛИЗАЦИЯ использование C ++. 11" // предварительно скомпилированные инструкции
 #endif

 

 

Статическое утверждение
  утверждениятомчто возвращаемое значение всегда необходимо действительно дискриминантных подать заявление об исключении не должно быть логически разработанычтобы заставить программу при возникновении исключения, выходчтобы избежать программ в логику путаница


  Assert.h файлы заголовков определяют макросы, пострадавших NDEBUG Если предварительно процедура в борьбе с этим заголовочного файла NDEBUG был определен, утверждают макрос определяется как пустой контента, что означает утверждать, макрос не работает. Таким образом, вы можете в финале когда издатель может использовать -DNDEBUG близких утверждения или #define NDEBUG добавлен к каждому исходному файлу, но это заявление должно быть помещено перед #include <assert.h>.

  • Статические утверждения и static_assert

    Мы утверждаем , утверждаем Runtime Руководства
      стандарта C ++ 11, представили static_assert утверждения, утверждения Решая скомпилированы

  static_assert (константа, предполагая , что строки).

  Если первая константа аргумент true (или ненулевое значение), то не static_assert делать ничего, как если бы оно не было, или вызовет ошибку компиляции, расположение ошибки static_assert оператор строки, Второй параметр является ошибка строкой приглашения.

 

noexcept модификаторы оператора и noexcept

  C ++ 98, динамическое исключение оператор броска (интермедиат, дважды), C ++ 11 являются устаревшими

1  аннулируются except_func () бросок ( INT , двойной ) {...}

   Она представляет собой динамическую функция не будет сгенерировано исключением, объявленные исключения броска () была заменена на новых noexcept ненормальной декларации

  • noexcept

    except_func недействительными () noexcept; представляет собой не бросать
    пустот (except_func) noexcept (постоянное выражение); выражение истинно не бросает исключение; flase брошен

 

рекомендация

отwww.cnblogs.com/lizhanzhe/p/10978394.html