問題タブ [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 - C90 と typedef
struct point {(...)};
定義していました。しかし、C90 では、typedef を使用する必要があるようです。これを正しく行うにはどうすればよいですか?typedef struct point {} point;
? typedef struct {} point;
? typedef struct point {};
?
c - -エラーを与えるAnsiとコメント?
-ansi -pedantic
を含む行でコンパイル中にエラーが発生します// Comment here
。なぜこれが起こるのですか?
'/'トークンの前に必要な式
プログラム内の漂遊'\347'
サンプルコードint someVariable = 0; // Some comment
私はこれらの多くのエラーを持っています、それは何ですか?
c - Cで値渡し
次のコードは移植可能ですか?
ポインターを値で渡すだけで、呼び出し元で変更できます。
function - 構造体の初期化を関数呼び出しで変数として使用するにはどうすればよいですか。ANSI-Cバージョン
私はC89、C90、Ansi-Cコードを書いています。私の関数の1つは、パラメーターとして構造体を必要とします。最初に構造体を作成してから関数に渡すのではなく、その構造体を初期化して関数を呼び出したいと思います。
動作するスニペットを次に示します。
これが私が書きたいものですが、うまくいきません:
またはさらに良い
編集:LabCVIはISO 9899:1990標準を使用しています。
c - C89 コードと C99 コードを混在させることは可能ですか?
C 仕様の違いに関連する多くのことについて、私は疑問を持っています。
C99 でライブラリをプログラミングした場合、C89 コードから使用できますか? (C89 準拠の定義を持つ関数のみを使用)。
たとえば、このコードは C89 で使用できますか?
共有ライブラリのヘッダー:
前もって感謝します :)
c - 定数に新しい値を割り当てようとしています
これは私のモジュールから抽出されます:
初期化後に定数に新しい値を割り当てようとすると、コンパイラは(のみ)警告メッセージを発行します。
これはC99では正しくありませんが、私のモジュールはC89に基づいているようですが、誰かがC89に従ってこのステートメントの有効性を確認できます。
c - gcc -ansi が cosf などの宣言を削除するのはなぜですか?
あなたはおそらく、私が完全に狂っていて、プログラミングがひどく下手だと思っているでしょう。それらの1つが当てはまるかもしれませんが、私の調査結果を読んでください.
はい、私は#include <math.h>
完全なコードはここにあります。( VS2010 でコンパイルできるように ansi 準拠にしようとしていましたが、混合コードと宣言に関するエラー、および fminf() の欠落が原因でした。VS2010 がデフォルトの警告レベルで混合コードと宣言を気にかけていることに驚きました。私は2008年は気にしないで思い出してください。しかし、間違っている可能性があります。)
以下は、c89/-ansi 標準を使用した場合の gcc 出力です。関数の暗黙の宣言に注意してください。未使用のパラメーターについては他にもいくつかありますが、今のところそれらについては気にしません。(GLUT でコールバックを登録するための署名に必要)
c89 または ansi 標準を使用してアプリケーションを実行すると、数学関数が期待どおりに動作しないのと同じように、間違った出力が生成されます。
c99 標準を使用すると、関数メッセージの暗黙の宣言がなくなりました。
c99 標準を使用すると、プログラムは期待どおりに動作します。
質問
-ansi フラグを使用すると、 math.h から宣言が削除されるように見えるのはなぜですか?
c - dirent.hなしでC90のディレクトリにアクセスするにはどうすればよいですか?
私はC90に基づいてLabCVIで働いています。
手元にあるタンクは、「..\data」ディレクトリとサブディレクトリにある「*.spec」ファイルの絶対パスを見つけることです。
dirent.hでこれを行う方法についての説明があることは承知していますが、dirent.hなしで行う必要があります。この(パートI、パートII)チュートリアルは、私が探しているものではありません。LabCVIはdirentヘッダーを備えておらず、dirent.hの依存関係がLabCVIと互換性がないため、インターネットからistをインポートできません。
LabCVIへのすべての依存関係を削除したら、より優れたIDE /言語に移行する予定ですが、その日までコードをキャンプ可能に保つ必要があります。そのため、LabCVIのディレクトリユーティリティを使用できません。
これを回避してディレクトリアクセスを取得するにはどうすればよいですか?(コードはXPマシンで実行されます。)
c - これは悪いコーディング慣行ですか?
PC-lintを使用してコードを分析していますが、これらの行でいくつかのエラーが発生しています。それは私のコーディングの慣習が間違っているのだろうかと思いますか?
編集:あなたの助けの後、私は今持っています:
それはどのように見えますか?
c - char を char 配列にキャストするか、char 配列を char にキャストしますか?
では、char があり、それを 1 行のコードで strcat() して char 配列にしたいとします。[非実用的な] 例:
または、逆のことをしたかったのですが、データ型に関係なく、文字列を連結または型キャストするための適切な関数は何でしょうか? または、私が見逃している構文があるかもしれません...
これが例です。コンパイルは問題なく実行できますが、クラッシュします。