問題タブ [c89]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C89 対 c99 GCC コンパイラ
c89 と c99 を使用して次のプログラムをコンパイルすると、違いはありますか? 同じ出力が得られます。両者の間に本当に違いはありますか?
string - C: 弦のトラブル
私は C89 が初めてで、文字列の仕組みがよくわかりません。私はWindows 7で開発しています。
Javaで私がやろうとしていることは次のとおりです。
C89でこれを行う私の不器用な試みは次のとおりです。
回答を反映するように更新する
hostnameLength
14 のhostname
場合、malloc()
31 文字です。なぜこれが起こるのですか?
header - C89:関数を参照する前に関数を宣言する必要がありますか?
私はC89を初めて使用しますが、関数を呼び出す前に関数を宣言する必要があるようです。したがって、これは受け入れられません。
なぜなら、ファイルのbar()
後で定義されているからです。foo()
これを回避する方法はありますか?ヘッダーファイルが必要ですか?
c - C89: Windows で getaddrinfo()?
私はC89が初めてで、ソケットプログラミングをしようとしています:
私はWindowsで開発しています。これらの include ステートメントを使用すると、Visual Studio はそのようなファイルがないと文句を言います。
私は何をすべきか?これは、Linux への移植性がないということですか?
c - 「この10進定数はISOC90でのみ符号なしです」という警告を取り除くことはできません
ハッシュテーブルの実装でハッシュアルゴリズムとしてFNVハッシュを使用していますが、次の行の質問のタイトルに警告が表示されます。
私がこれを行うとき、なぜこれが起こっているのか理解できません:
私はこれを手に入れます:
これは私のマシンの制限の下にあるようです...
警告が表示されるのはなぜですか。警告を取り除くためのオプションは何ですか。
c - C89で構造体をポインタで渡す
C89 コンパイラを使用していますが、ポインターの入力エラーが発生しています。
呼び出しコード:
Print_out_cpu は別の場所で定義されており、H ファイルは #include されています。
エラーが発生します:
error: incompatible type for argument 1 of 'print_out_cpu'
私が理解できる限り、&cpu_state
type を返すcpu_state_type*
ので、混乱しています。
c - CがC99より前のブールデータ型を持っていなかったのはなぜですか?
いくつかの整数しか使用できないことはわかっていますが#define
、C99より前にCに専用のブールデータ型がなかったのはなぜですか?
これはプログラミングやロジックでよくあることですが、明示的な型や表記法がないことはわかりません。
c - 別の関数内の Malloc
明らかにポインターを使用して、別の関数内から構造体を割り当てる必要があります。私はこの問題を何時間も見つめ、何百万通りもの方法で解決しようとしました。
これはいくつかのサンプルコードです (非常に単純化されています):
これにより、割り当て呼び出しの前後で同じアドレスが得られます。
おそらく関数内でコピーを作成するためだと思いますが、引数として指定したポインターを実際に操作する方法がわかりません。some_struct の代わりに some_struct * を定義しようとしましたが、うまくいきませんでした。私は試しました:
これは問題なく動作します(割り当て関数も変更する必要があります)が、割り当てに従って宣言を変更することはできず、* argである必要があります。宣言するだけでよい場合は、最も正しいでしょう。 some_struct s.. some_struct * ではありません。割り当て関数の目的は、構造体 (some_struct) を初期化することです。これには、割り当ても含まれます。
言い忘れたことをもう一つ。割り当て関数の戻り値 0 は、一部のステータス メッセージ用に予約されているため、これを使用してアドレスを返すことはできません。
c - 推奨されるClangコマンドラインオプション
Clangのマニュアルは進行中のようですが、ANSI-C(AKA C89、C90)を最大限の厳密さと関連性のある/役立つ警告でコンパイルするための決定的なコマンドラインオプションを作成するのを手伝ってもらえますか?
Clangは、C、C ++、およびObjective-Cプログラミング言語用のコンパイラフロントエンドです。バックエンドとして低レベル仮想マシン(LLVM)を使用します。それはまだ開発中です。その目標は、GNUコンパイラコレクション(GCC)に代わるものを提供することです。
c - 定義の関数見出しの後のC変数宣言
FreeBSDのソースコードを読んでいると( radix.hの158〜173行目を参照)、定義の「関数の見出し」に続く変数宣言を見つけました。
これはISOC(C99)で有効ですか?これは、「関数の見出し」内で変数を宣言するだけでなく、本番コードでいつ実行する必要がありますか?なぜここで行われているのですか?
次のような文字列の見出しの関数を参照します。int someFunction(int i, int b) {