c++ - 読み方 - 指示初期化子




C99のすべての機能はC++でも使えますか? (2)

このページには、C99で新しく追加された53個の機能がリストされています(つまり、C99には含まれていますがC89には含まれていません)。 これらすべての機能はC ++でも使えますか? C ++ 98でも?

そうでなければ、どの機能がC ++にあり、どれがそうではないのでしょうか。


柔軟な配列メンバは、どのC ++標準にnotれてnot (そしてdynarray提案はC ++では採用されてnot )。 C ++にはない、あまり使用されていないC99機能は他にもたくさんあります。


次のC99(ISO 9899:1999)機能は、C ++(ISO 14882:2017)で完全にサポートされています。
(ただし、ライブラリヘッダは<cname>ではなく<name.h>ます。

  • <wchar.h>および<wctype.h>でのワイド文字ライブラリのサポート(当初はISO / IEC 9899:1990 / Amd.1:1995で指定されていました)
  • <tgmath.h>型総称数学マクロ
  • long long int型とライブラリ関数
  • 拡張整数型
  • 最小翻訳制限の増加
  • <float.h>追加の浮動小数点特性
  • 暗黙的なintを削除
  • 信頼できる整数除算
  • ユニバーサル文字名(\ uと\ U)
  • 拡張識別子
  • 16進浮動小数点定数と%aおよび%A printf / scanf変換指定子
  • //コメント
  • <inttypes.h><stdint.h>指定された幅の整数型と対応するライブラリ関数
  • 暗黙の関数宣言を削除します
  • intmax_t / uintmax_tで行われたプリプロセッサ演算
  • 宣言と文の混在
  • 選択ステートメントと繰り返しステートメントの新しいブロックスコープ
  • 整数定数型の規則
  • 整数プロモーションルール
  • <stdio.h>および<wchar.h>のvscanfファミリー関数
  • <math.h>追加の数学ライブラリ関数
  • 数学ライブラリ関数によるエラー状態の処理(math_errhandling)
  • <fenv.h>での浮動小数点環境アクセス
  • IEC 60559(別名IEC 559またはIEEE算術演算)サポート
  • 列挙宣言で使用できる末尾のコンマ
  • printfで許可されている%lf変換指定子
  • インライン関数
  • <stdio.h>のsnprintfファミリー関数
  • べき等型修飾子
  • 空のマクロ引数
  • 追加の定義済みマクロ名
  • _プラグマ前処理演算子
  • 標準プラグマ
  • __func__事前定義識別子
  • va_copyマクロ
  • 追加のstrftime変換指定子
  • LIA互換性アネックス
  • バイナリファイルの先頭でungetcを廃止
  • エイリアス配列パラメータの廃止予定を削除
  • 左辺値に限らずポインタから配列への変換
  • 集約および共用体の初期化に対する緩和された制約
  • 移植可能なヘッダー名に対する緩和された制限
  • 値を返す関数では式を使わずに返すことはできません(逆も同様)
  • 可変数の引数を持つマクロ

次のC99機能はC ++でも同様に使用できますが、実装に違いがあり、言語間でコード互換性がありません。

  • digraphsと<iso646.h>による制限付き文字セットのサポート(当初はISO / IEC 9899:1990 / Amd.1:1995で指定されていました)
  • 有効型によるより正確なエイリアシング規則
  • <complex.h>における複素数(および虚数)のサポート
  • <stdbool.h>ブール型
  • 新しい構造型の互換性規則(タグの互換性)

次のC99機能はC ++ではサポートされていません。

  • 制限付きポインタ
  • 可変長配列
  • フレキシブルアレイメンバー
  • パラメータ配列宣言子のstaticおよびtype修飾子
  • 複合リテラル
  • 指定イニシャライザ






c89