問題タブ [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 投票する
6 に答える
1156 参照

c - ANSIC90でランタイムエラーをキャッチするにはどうすればよいですか

ライブラリ関数ConnectToTCPServerを使用しています。この関数は、ホストに到達できない場合にタイムアウトします。その場合、アプリケーションは次のエラーでクラッシュします: "NON-FATAL RUN-TIME ERROR:" MyClient.c "、line 93、col 15、thread id 0x000017F0:Library function error(return value == -11 [0xfffffff5]) 。タイムアウトエラー」

エラーコード11はタイムアウトエラーであるため、これは私のアプリケーションで非常に頻繁に発生する可能性がありますが、アプリケーションがクラッシュします。アプリケーションをクラッシュさせるのではなく、このエラーをキャッチしたいと思います。

Ansi C90でこのランタイムエラーをキャッチするにはどうすればよいですか?

編集:これが現在の使用のコードスニペットです:

Callbackfunctionが呼び出されることはありません。サーバーが実行されていないため、ConnectToTCPServerがタイムアウトします。コールバックが呼び出されているのではないかと思いますが、呼び出されることはありません。

編集2:コールバック関数は実際には呼び出されません。ConnectToTCPServerの戻り値に、同じエラー情報が含まれています。ConnectToTCPServerがこのエラーをスローするのはバグかもしれないと思います。私はそれをキャッチしてC90でビンに入れる必要があります。何か案は?

編集3:コールバック関数をテストしました。サーバーがオンラインであるというまれなケースで、コールバック関数が実際に呼び出されます。エラーが発生したときにコールバックが呼び出されないため、これは役に立ちません。

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

gcc-warning - C90コードのコンパイル中にgccコンパイラで「ISOC90は可変サイズ配列を禁止します」という警告が表示される

C90cコードをgccでコンパイルしています。ISO C90 forbids variable-size array次のような宣言をしているときに警告が表示されます

int symbols[nc];

ここで、ncは整数であり、その値は入力ファイルから読み取られます。入力ファイルの値が変化しているため、一定の値を維持できません。どうすればそれを取り除くことができますか?この警告を解決する必要があるのでしょうか、それとも単に無視することができるのでしょうか。

前もって感謝します。

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

c - C90 で入力の書式設定 (先行ゼロと小数点以下の桁数の削除) を行いますか?

このプログラムでやりたいことは、任意の数値を入力して一度に文字を読み取ってから、それを使用できるように int にフォーマットすることです (printf フォーマットを使用したくない) また、私はこの割り当てには getchar と printf を使用できます。

サンプル入力: 0001234.5
edit望ましい出力: <1234>(5) 実際の出力: 0001234050

ひらめきの先端にいるような気がしますが、障害物にぶつかりました。助けてください。

*編集 目的の END 結果は、非 10 進数を <1234> で囲み、10 進数を角かっこ (5) で囲むことです。

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

c - 基本パラメーターを持つ strtod

不必要に車輪を再発明したくありませんが、strtod の機能を探していますが、基本パラメーター (2,8,10,16) を使用しています。(strtoul が基本パラメーターを許可することは知っていますが、戻り値の型 double を探しています)。正しい方向へのアドバイス/指針はありますか? ありがとう。

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

c - C90 など、現在のコンパイラの標準を見つける方法

私はLinuxマシンで作業しています。私が使用しているCコンパイラが続く標準を見つけるためのシステムコマンドはありますか?

0 投票する
6 に答える
1802 参照

c - C のどの部分が最も移植性が高いですか?

最近、Lua の共同作成者である Luiz H. de Figueredo と Roberto Ierusalimschy のインタビューを読み、Lua の設計と実装について説明しました。控えめに言っても非常に興味をそそられました。しかし、議論の一部で私の心に何かが浮かびました。Roberto は、Lua を「独立したアプリケーション」 (つまり、OS から何も使用しない純粋な ANSI C です) と述べました。Lua のコアは完全に移植可能であり、その純粋さのために多くの移植が可能であると述べました。より簡単に、これまで考えもしなかったプラットフォーム (ロボットや組み込みデバイスなど) にも対応できます。

今、これは私を不思議に思います。一般に、C は非常に移植性の高い言語です。では、C のどの部分 (つまり、標準ライブラリーの部分) が最も移植性が低いのでしょうか? また、ほとんどのプラットフォームで動作することが期待できるものは何ですか? 限られたデータ型のセットのみを使用する必要がありますか (例:shortと 多分を避けるfloat)? とシステムFILEはどうですか?そして?Lua はこれらすべてを回避しているようです。それは物事を極端にしていますか?それとも移植性の問題の根源ですか? これ以外に、コードの移植性を非常に高めるためにできることは何ですか?stdiomallocfree

私がこのすべてを尋ねている理由は、私が現在純粋な C89 でアプリケーションを作成しているためであり、可能な限り移植可能であることが最適です。私はそれを実装する際に中間の道を喜んで取ります (移植性は十分ですが、すべてを最初から書かなければならないほどではありません)。

最後の注意として、この説明はすべて C89 のみに関連しています。

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

c - C90で可変サイズの配列を割り当てる方法は?

SYMBOL に変数サイズを割り当てる必要があります。

typedef int SYMBOL

私は次の方法で行いました

SYMBOL test[nc] nc これは整数です。しかし、これにより次の警告が表示されます。

ISO C90 forbids variable-size array

警告を受けずにそれを行うにはどうすればよいですか?

ありがとう、テトナ

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

c - C89標準でのM_PIの使用

私はCを使用していて、定数M_PI(3.14159 ...)にアクセスしようとしています。math.hヘッダーファイルをインポートしましたが、M_PI定数はまだ定義されていませんでした。StackOverflowで検索したところ#define _USE_MATH_DEFINES、コードに追加する必要があることがわかりました(以下のサンプルコードを参照)。std=c89これは通常のコンパイルでは正常に機能しますが、実行中の作業のフラグを使用してコンパイルできる必要があります。

C89コードからM_PIにアクセスするにはどうすればよいですか?

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

c - ANSI C では、一定時間後に各文字を同じ場所に印刷することはできませんか?

コンソールに出力する乱数を生成しようとしています。LinuxでCでプログラミングしています。各数字に対して 1 秒の時間間隔の後、すべての数字を 1 か所に出力したかったのです。「時間間隔」を停止するため
に使用しています。sleep()試してみましたが\b\r何も機能しません。たとえば
、これを実行したかっただけです:

0 投票する
5 に答える
20468 参照

c - MS Visual C ++でVLA(可変長配列)を有効にしますか?

VLA、C99で定義されている可変長配列、MS Visual C ++での使用を有効にするにはどうすればよいですか、それともまったく不可能ですか?

はい、C ++標準はC89に基づいており、VLAはC89標準では使用できないため、C ++では使用できないことを知っていますが、MSVC ++もCコンパイラであると想定されており、/を使用してオンに切り替えることができます。 TCコンパイラパラメータ(Compile as C Code (/TC))。ただし、これを行うとVLAが有効にならないようで、コンパイルプロセスは失敗し、C ++(Compile as C++ Code (/TP))と同じエラーが発生します。たぶん、MSVC ++ CコンパイラはC89にのみ準拠しているのでしょうか、それとも何か(特別な構造またはプラグマ/定義)が不足しているのでしょうか?

コードサンプル:

コンパイルエラー:

エラーC2057:予期される定数式

エラーC2466:定数サイズ0の配列を割り当てることができません

エラーC2133:'pc':不明なサイズ