英語フランス語スペイン語

Ad


OnWorksファビコン

c++decl - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーター上の OnWorks 無料ホスティング プロバイダーで c++decl を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド c++decl です。

プログラム:

NAME


cdecl、c++decl - C および C++ の型宣言を作成します。

SYNOPSIS


cdecl [-a | -+ | -p | -r] [-ciqdDV]
[[ ファイル ...] | 説明します ... | 宣言する ... | キャスト ... | セッションに ... | 助けます | ? ]
c++decl [-a | -+ | -p | -r] [-ciqdDV]
[[ ファイル ...] | 説明します ... | 宣言する ... | キャスト ... | セッションに ... | 助けます | ? ]
説明します ...
宣言する ...
キャスト ...

DESCRIPTION


Cdecl (と c++decl) は、C (または C++) の型宣言をエンコードおよびデコードするためのプログラムです。
C 言語は、X3J11 ANSI 標準 (草案提案) に基づいています。 オプションで、C
言語は、Kernighan & Ritchie によって定義された ANSI 以前の定義に基づいている可能性があります。   C
プログラミング 言語設定 本、または Ritchie PDP-11 C コンパイラによって定義された C 言語。
C++ 言語は Bjarne Stroustrup の言語に基づいています。   C + + プログラミング 言語設定、プラス
バージョン 2.0 の言語への追加。

OPTIONS


-a C 言語の ANSI C 方言を使用します。

-p Kernighan & Ritchie の本で定義されている ANSI 以前の方言を使用します。

-r Ritchie PDP-11 C コンパイラによって定義された方言を使用します。

-- C ではなく C++ 言語を使用します。

-i 対話モードで実行します (端末から読み取る場合のデフォルト)。 これもまた
プロンプト、行編集、および行履歴をオンにします。

-q プロンプトを閉じます。 対話モードでプロンプトをオフにします。

-c コンパイル可能な C または C++ コードを出力として作成します。 Cdecl 最後にセミコロンを追加します
宣言と XNUMX 対の中括弧を関数定義の最後に追加します。

-d デバッグ情報をオンにします (コンパイルされている場合)。

-D YACC デバッグ情報をオンにします (コンパイルされている場合)。

-V バージョン情報を表示して終了します。

呼び出し


Cdecl は、さまざまな名前で呼び出すことができます (実行可能ファイルの名前を変更するか、
またはそれへのシンボリックリンクまたはハードリンクを作成します)。 次のように呼び出された場合 cdecl ANSI C は
既定の言語。 次のように呼び出された場合 c++decl その場合は C++ がデフォルトになります。 呼び出された場合
どちらかとして 説明します, キャストまたは 宣言する その後、コマンドラインの残りの部分が解釈されます
オプションをそのコマンドのパラメータとして指定し、コマンドを実行して終了します。 それもやります
これは、コマンド ラインのスイッチ以外の最初の引数がこれら XNUMX つのコマンドのいずれかである場合に発生します。
入力はファイルから取得することもできます。

Cdecl 以下で説明する言語でのステートメントの名前付きファイルを読み取ります。 あ
その言語から C (C++) または疑似英語への変換が行われます。 の結果
この変換は標準出力に書き込まれます。 ファイルに名前が付けられていない場合、またはファイル名が指定されている場合
「-」の場合は標準入力が読み取られます。 標準入力が
ターミナル、(または -i オプションが使用されている場合)、各処理の前にプロンプ​​トが端末に書き込まれます。
ライン。 プロンプトは次の方法でオフにできます。 -q オプション(または セッションに プロンプトなし 指図)。 もしも
cdecl として呼び出されます 説明します, 宣言する or キャスト、または最初の引数はコマンドの XNUMX つです
以下で説明するように、引数リストは示されている文法に従って解釈されます。
ファイル名の代わりに以下のようになります。

インタラクティブに実行すると、 cdecl GNU readline ライブラリを使用してキーワードを提供します
完了とコマンドライン履歴は非常によく似ています bash(1) (前項)。 TAB キーを押すと、
複数の可能性がある場合を除き、カーソルの前に部分的なキーワードを完成させます。
この場合、XNUMX 番目のタブには可能な補完のリストが表示され、
コマンドラインを再表示します。 左右の矢印キーとバックスペースは次の目的で使用できます。
自然な方法で編集でき、上下の矢印キーで前のコマンド ラインを取得できます。
歴史から。 他のほとんどの使い慣れたキー (Ctrl-U など) は、テキストをすべて削除します。
カーソルを行の先頭に戻すと、期待どおりに動作します。 の間には曖昧さがあります
  int型 & キーワードですが、 cdecl あなたがどちらの意味を言ったかを推測します、そしてそれは常に推測します
正しく

あなたが使用することができます cdecl 次のようなエディタを使用して C プログラムを作成すると、 vi(1)または エマックス(1)。 あなた
擬似英語版の宣言を入力して適用するだけです cdecl フィルターとして
ラインに。 (の vi(1)、「」と入力します。!!cdecl''。)

Status 作ります プログラム オプション -c を使用すると、出力にはその後にセミコロンが含まれます。
関数宣言の後の変数宣言と中括弧のペア。

  -V オプションは、プロセスの作成に使用されたファイルのバージョン番号を出力します。
デバッグ情報をオンにしてソースをコンパイルすると、 -d オプションが有効になります
それが出力されることになります。 YACC デバッグ情報をオンにしてソースをコンパイルした場合、
-D オプションを付けると出力可能になります。

COMMAND 言語


この言語には XNUMX つのステートメントがあります。 の 宣言する ステートメントは C 型を構成します
冗長な説明からの宣言。 の キャスト ステートメントは次のようにキャストされた C 型を構成します
式に現れるかもしれません。 の 説明します ステートメントが C の型宣言をデコードするか、
キャストして、詳細な説明を生成します。 の 助けます (または ?) ステートメントはヘルプを提供します
メッセージ。 の やめます (または 終了する) ステートメント (またはファイルの終わり) によりプログラムが終了します。 の セッションに
ステートメントを使用すると、コマンド ライン オプションを対話的に設定できます。 それぞれの発言は、
セミコロンまたは改行で区切ります。

同義語


宣言中には、いくつかの同義語が許可されます。

文字は char の同義語です
定数は const の同義語です
enumeration は enum と同義です
func は関数の同義語です
integer は int の同義語です
ptr はポインタの同義語です
ref は参照と同義です
ret は返すことの同義語です
構造体は構造体の同義語です
ベクトルは配列の同義語です

TAB 補完機能は、右側の列のキーワードのみを認識します。
左の列の構造ではありません。 TAB 補完は、次の場合にはあまり役に立ちません。
異なるキーワードの先頭文字が同じである (キーワードが XNUMX つのキーワードと競合している)
別のもの)、両方の列を入れるとかなりの数の競合が発生します。

文法


次の文法は言語を説明します。 文法上、「<>」内の単語は非対応です。
端子、裸の小文字の単語は、それ自体を表す端子です。 裸の大文字
単語は他の語彙トークンです。NOTHING は空の文字列を意味します。 NAME は C 識別子を意味します。
NUMBER は XNUMX 進数の文字列を意味します。 NL は改行またはセミコロンを意味します
文字。

::= 何もありません
| オランダ語
::= 何もありません
| NAME を次のように宣言します
| 宣言する
| NAMEをキャストしてください
| キャスト
| 説明
| 説明
| 説明 ( ) オプションの名前
| 設定
| ヘルプ | ?
| やめる
| 出口
::= の配列
| 配列 NUMBER 個
| 関数が戻る
| 関数 ( ) 戻る
| へのポインタ
| クラスNAMEのメンバーへのポインタ
| への参照
|
::=
| *
| 名前 :: *
| &
::= ( )
| ( )
| [ ]
| [ 番号 ]
| ( )
| 名前
::= 何もありません
| ( )
| ( ) ( )
| ( ) ( )
| ( )
| 名前 :: *
| *
| &
| [ ]
| [ 番号 ]
::= |
|
| 構造体名 | ユニオン名 | 列挙型名 | クラス名
::= 、
|
|
::= 、
| なし
|
|
| として
::= int | 文字 | ダブル | フロート | 空所
::= |
::= 短い | 長い | 署名なし | 署名済み |
::= | なし
::= 定数 | 揮発性| ノエイリアス
::= 自動 | 外部 | 登録 | 静的
::= 何もありません |
::= 何もありません |
| 作成する | 作成しない
| プロンプト | プロンプトなし
| リッチープレアンシ | アンシ | シープラスプラス
| デバッグ | ノードバグ | yyデバッグ | いいえデバッグ

セット OPTIONS


  セッションに コマンドにはいくつかのオプションがあります。 入力できます セッションに or セッションに オプション 確認する
現在選択されているオプションと利用可能なオプションの概要。 最初
XNUMX つは、 -a, -p, -r, -+ それぞれコマンドラインオプション。

ansi C 言語の ANSI C 方言を使用します。

プレアンシ
Kernighan & Ritchie の本で定義されている ANSI 以前の方言を使用します。

リッチー
Ritchie PDP-11 C コンパイラによって定義された方言を使用します。

cプラスプラス
C ではなく C++ 言語を使用します。

[いいえ]プロンプト
対話モードでプロンプトをオンまたはオフにします。

[いいえ]作成します
宣言へのセミコロンまたは中括弧の追加をオンまたはオフにします。
によって出力 cdecl。 これは、 -c コマンドラインオプション。

[いいえ]デバッグ
デバッグ情報をオンまたはオフにします。

[いいえ]yyデバッグ
YACC デバッグ情報をオンまたはオフにします。

注: デバッグ情報と YACC デバッグ情報は、
にコンパイルされました cdecl。 最後の XNUMX つのオプションは、 -d & -D コマンドライン
オプションをそれぞれ指定します。 デバッグ情報は通常、プログラム開発で使用されます。
通常、分散実行可能ファイルにはコンパイルされません。


次のような関数へのポインターの配列を宣言するには malloc関数(3)、する

fptab を char へのポインタを返す関数へのポインタの配列として宣言します

このコマンドの結果は次のとおりです

char *(*fptab[])()

他の人のコードでこの宣言を見た場合、次のように理解できます。
すること

Explain char *(*fptab[])()

適切な宣言 信号(2) は、関数プロトタイプを無視して、次のように簡単に記述できます。
cdeclの言語:

シグナルを void を返す関数へのポインタを返す関数として宣言する

を生成します

void (*signal())()

結果の関数宣言には XNUMX セットの空の括弧が含まれます。 の著者
このような関数は、パラメータをどこに置くべきか迷うかもしれません。

信号を関数 (arg1,arg2) として宣言し、関数へのポインタを返します。 void を返します。

次の解決策が提供されます ( -c オプション):

void (*signal(arg1,arg2))() { }

関数プロトタイプを追加したい場合は、次のような関数の関数プロトタイプを追加します。
as _出口(2) は次のように宣言されます。

void を返す関数として _exit を宣言 (retvalue を int として)

与え

void _exit(int retvalue) { }

関数プロトタイプを使用したより複雑な例として、 信号(2) は次のように完全に定義できます。

信号を関数として宣言します(x を int として、y を関数 (int) へのポインタとして void を返します)
function(int) へのポインタを返す void を返す

与える (-c 付き)

void (*signal(int x, void (*y)(int )))(int ) { }

Cdecl 「const」修飾子と「volatile」修飾子をどこに置くかを理解するのに役立ちます。
したがって、宣言

foo を const int へのポインタとして宣言します

与える

const int *foo

while

foo を int への const ポインタとして宣言します

与える

int * const foo

C++decl 参照の宣言に役立ちます。

x を文字へのポインタへの参照として宣言します

与える

文字 *&x

C++decl クラスのメンバーへのポインタを支援できるため、クラスへのポインタを宣言します。
クラス X の整数メンバー

foo をクラス X int のメンバーへのポインタとして宣言します

与える

int X::*foo

&

ポインタを返すクラス X 関数 (arg1、arg2) のメンバーへのポインタとして foo を宣言します。
クラスYへ

与える

クラス Y *(X::*foo)(arg1, arg2)

診断


宣言文、キャスト文、および説明文は、正しくない構造を指摘しようとします。
場合によっては、実際に何が意図されていたのかが推測されることがあります。 これらの中で
場合によっては、C の結果はおもちゃの宣言となり、そのセマンティクスは Algol-68 でのみ機能します。 の
サポートされていない C 構造のリストは、使用されている C 言語のバージョンによって異なります。
使用されます (ANSI、ANSI 以前、および Ritchie オプションを参照)。 サポートされている C++ 構造のセット
ANSI セットのスーパーセットです。ただし、 ノエイリアス キーワード。

参考文献


ANSI 規格 X3.159-1989 (ANSI C)

ISO/IEC 9899:1990 (ISO 規格)

comp.lang.c FAQ
http://www.eskimo.com/~scs/C-faq.top.html

C リファレンス マニュアルのセクション 8.4   C プログラミング 言語設定 B. カーニハン著 &
D.リッチー。

C++ リファレンス マニュアルのセクション 8   C + + プログラミング 言語設定 B 著
ストルストラップ。

警告


擬似英語の構文は非常に冗長です。

実行されていないセマンティックチェックが大量にあります。

Cdecl ANSI C 標準が完成する前に書かれており、何の試みも行われていません
最新の状態にするために。 それにもかかわらず、それは標準に非常に近く、明らかな
の例外 ノエイリアス.

Cdeclの範囲は意図的に小さくなっています。 初期化を理解するのには役立ちません。 それ
ストレージ クラスが宣言の先頭にあり、その後に
const、volatile、および noalias 修飾子、その後に変数の型が続きます。 Cdecl
可変長の引数リストについては何も知りません。 (これには「」も含まれます)、...''
構文。)

Cdecl あなたが発するすべての宣言は外部定義として使用されると考えています。
C の一部の宣言コンテキストでは、これよりも柔軟性が高くなります。 この例は次のとおりです。

argv を char の配列の配列として宣言します

コラボレー cdecl で応答します

警告: C ではサポートされていません -- 「サイズが指定されていない内部配列」
(おそらく「ポインタの配列」を意味します)
文字引数[][]

の暫定サポート ノエイリアス キーワードは ANSI 草案に含まれていたため挿入されました
仕様。

作者


元々は Graham Ross によって書かれ、David Wolverton、Tony Hansen によって改良および拡張されました。
そしてマーリン・ルロイ。

GNU readline サポートと Linux ポート (David R. Conrad 著)[メール保護]>

onworks.net サービスを使用してオンラインで C++decl を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad