問題タブ [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.

0 投票する
3 に答える
3512 参照

c - C90-C99:構造体の登録

「登録構造体」は合法ですか?標準と(標準から分離された)Gccの観点から?

0 投票する
3 に答える
1828 参照

c - Windowsプラットフォームでansi-cを使用すると、システムの時間をミリ秒単位の精度で取得できますか?

ミリ秒の精度を取得する必要があります。この質問を調べますが、Windowsで作業しています。POSIX関数のリンクエラーが発生します。

1970年以降のUTC時間をミリ秒単位で取得できれば非常に良いでしょう。

0 投票する
2 に答える
217 参照

iphone - ansic アプリケーションのバイナリ ファイルは iPhone で実行できますか?

ANSI C で記述されたアプリケーションをいくつか持っています。これらのアプリケーションのバイナリ ファイルを iPhone で実行できますか? 直接ではない場合、他の便利な方法はありますか? アプリケーションを書き直したくありません。

0 投票する
4 に答える
8351 参照

c - ANSI C を使用したファクトリ パターンの実装

ANSI C を使用してファクトリ パターンを実装する方法についてのリファレンスを教えてもらえますか? より多くのパターンがカバーされている場合は、ボーナスになります. C++ でこれを行うのは簡単なことですが、C にはクラスとポリモーフィズムがないため、その方法がよくわかりません。私は、すべての共通データ型を持つ「基本」構造体を持ち、次に void ポインターを使用し、構造体のすべての共通部分を上部の基本構造体と同じ順序で定義することを考えていましたか? それとも、メモリ内で同じようになることが保証されていませんか?

0 投票する
1 に答える
408 参照

c - ANSI C での TCP パケットの作成/構築

サードパーティのツールを使用せずに、ANSI C で TCP (さらに言えば UDP) パケットを作成するにはどうすればよいですか? すべてのオプション フラグ、ソース IP アドレスなどを設定できるようにしたいので、完全に制御します。オンラインでそれに関する適切なテキストが見つかりませんでした。または、間違った検索条件を使用しています。

0 投票する
1 に答える
394 参照

c - Cでキーストロークの1つまたは組み合わせを検出するにはどうすればよいですか?

ANSI C および/または Win32 SDK でキーのストロークの 1 つまたは組み合わせを検出するにはどうすればよいですか?

例: CTRL+ALT+DEL が押されたことをどのように検出できますか?

ソース コードまたは Web リンクを提供してください。

イベントではなく、ポーリングメカニズムを使用していることに注意してください。

win32コンソールモードで行う必要があります。

0 投票する
3 に答える
3278 参照

c - 引数の数や最後の引数を渡さずにC89で可変個引数関数を使用しますか?

可変個引数関数があるとしましょう。foo関数foo(int tmp, ...)を呼び出すときは、引数がいくつあるかを知る必要があります。私は、引数がいくつあるかを知る2つの方法を知っています。

  1. fooを呼び出すときは、-1のように最後の引数を使用します。これにより、関数呼び出しは次のようになりfoo(tmp, 1, 2, 9, -1)ます。foo内にいて、va_arg呼び出しが-1を返す場合、すべての関数引数を読んだことがわかります。

  2. プログラマーが引数の総数を持つfooにもう1つの引数を追加すると、次のようにfooが呼び出されます。foo(tmp, 5, 1, 2, 3, 4, 5)またはfoo(tmp, 2, 7, 8)

私は最初の方法をたどっていましたが、かつて次のバグがありました。コードで:

ここで、expr_of_typeは可変個引数関数であり、expr(最初の引数)が次のタイプのいずれかであるかどうかをチェックしていました(boolexpr_eまたはnew_table_eまたはnil_eはすべてのタイプの列挙型でした)。私は誤って書いた:

nil_eと-1の間のコンマを忘れました。これは、nil_eが列挙型であり、nil_e -1が有効な式であり、nil_eが0ではなかったため、expr_of_type引数を取得しようとしたときに、指定された可変個引数が最後の引数として-1を検出しなかったためです。検索を続けてバグを作成しましたが、見つけるのに少し時間がかかりました。

可変個引数関数にもう1つの引数を追加または削除するときは、引数の総数を含むパラメーターを変更する必要があるため、2番目の方法も適切ではありません。

可変個引数関数を使用/作成するためのより良い方法を探しているときに、最初の方法を使用したときに発生したバグを解決できる可変個引数マクロを見つけました。ただし、可変個引数マクロはC99標準で使用できます。C89で可変個引数関数を使用/作成するためのより良い方法を探していました。何か案は?

0 投票する
2 に答える
2557 参照

c - ANSI C実装のHATトライ?

フリー ライセンスでリリースされた ANSI C HAT-trie の実装を探しています。見つけたことがありません。スタンドアロンの実装、または HAT 試行を使用して正しい方法で実装する方法を少しでも理解できるプログラムを教えてください。

HAT-trie に関する元の論文は、http: //crpit.com/confpapers/CRPITV62Askitis.pdfにあります。

PS: 上記の論文が書かれた時点から、文字列に適した構造の高速なキャッシュを意識したデータが進化した場合は、論文またはサンプル ソース コードを参照してください。

0 投票する
7 に答える
13958 参照

c - STLベクトルに相当するCは良いですか?

コードベースのいくつかの場所で、動的に拡張する配列、つまり要素カウンターと「最大要素」値を組み合わせた基本配列を使用していることに気付きました。

私がやりたいのは、通常のオブジェクト指向の理由から、これらを共通のデータ構造とユーティリティ関数に置き換えることです。配列要素は、基本的なデータ型または構造体のいずれかです。要素への高速ランダムアクセスが必要であり、できればタイプセーフな実装が必要です。

したがって、基本的にはSTLベクトルを使用しますが、コードベースはC89に制限されているため、別の方法を考え出す必要があります:-)

私はそれにいくつかの考えを与え、私が何を目指しているかを示すために、この最初のドラフトを作成しました:

...しかし、これを以前に行ったことがある人が他にいるはずです。私は、FreeBSD sys / queue.hがいくつかの異なるキューに対して同様の概念を実装していることを知っていますが、配列に対してはそのようなものを見つけることができません。

ここに賢い人はいますか?

0 投票する
3 に答える
142818 参照

c - C:doubleをfloatに変換し、小数点の精度を維持します

私はdoubleをCでfloatに変換したかったのですが、変更なしで小数点をできるだけ正確に保持したかったのです...

たとえば、私が持っているとしましょう

間違っている場合は訂正してください。浮動小数点の精度はドットの後の約5桁です。ダブルが持っていたのとまったく同じように、ドットの後にこれらの5つの数字を取得できますか?そのため、上記の結果は次のようになります。

印刷する必要があります

精度制限(私は5と想定)の後のすべての数字は切り捨てられます。