問題タブ [ifndef]

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 投票する
0 に答える
1754 参照

c - ヘッダー ファイルの Typedef が、それを含む別のファイルから見えない

C で次の問題が発生しています。ヘッダーファイル ("mep.h") で構造体の typedef を宣言しています。

「mep.h」を含む別のヘッダーファイル (「mep_types.h」) を使用し、構造体「Mep_tag」を定義し、「Mep」型名を使用します。

これをコンパイルすると、何らかの理由で次のエラーが発生します: "mep_types.h: error: unknown type name "'Mep'".

ただし、「mep.h」で、このように ifndef ガードの外に typedef を配置すると...

... 「mem_types.h」に「Mep」型名が表示されます。

誰かがこれがどのように起こるか知っているでしょうか?

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

c++ - C++ の 2 つのヘッダー ファイルが相互にインクルードする

3つの.hファイルがあります

あ:

Bh

カード.h

A.hB.hは互いにインクルードするため、すべてのヘッダー ファイルがインクルードされるわけではありません。

アドバイスをお願いします。

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

visual-studio - C++ の宣言が必要な define ステートメント

わかりましたので、#ifndefand/or#defineキーワードに関係する問題を絞り込みました。

他に 2 つの.hファイルがあり、エラーのないファイルとエラーのないファイルの唯一の違いは、 で強調表示されている構文#ifndef EMPLOYEE_Hと、#define EMPLOYEE_Hエラーのあるファイルでスワップされていることです。

それが何を意味するのかはわかりませんが(Visual Studioを使用しています)、他の定義済みステートメントがすべて、一部に含まれているように白くなります。

何が悪いのかわからない!

これが私のコードです:

私のエラーは次のとおりです。

エラー 1 エラー C2059: 構文エラー: '}'

エラー 2 エラー C2143: 構文エラー: ';' がありません 前 '}'

4 IntelliSense: 宣言が必要です

引用符

また、エラーは }; 最後に強調表示されています。

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

c - マクロがまだ定義されていない場合にのみマクロを定義するのはなぜですか?

私たちの C コード ベース全体で、すべてのマクロが次のように定義されていることがわかります。

マクロを定義するだけでなく、これらの定義チェックを行う理由は何ですか?

この慣行については、Web のどこにも説明がありません。

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

c++ - 括弧の有無にかかわらず、マクロ関数の存在を確認しますか?

マクロ関数を定義する前に、それがまだ存在しないことを確認できます
(これにより、以前の定義が上書きされるのを回避できます)。

次のようにチェックと定義を実装できます。

またはこのように:

関数が既に定義されている場合、どちらも機能するように見えます。
それで、どれが正しいですか?どちらが好ましいですか?

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

c - C でのプリプロセッサ引数と #ifndef #ifdef のコンパイル

ファイルのコンパイル時にコードにデフォルト値を適用しようとしています。

コードで定義済みのキーワードを特定の値に設定する必要があります。

そのため、コードをコンパイルし、コンパイラの引数で定義を受け取っていない場合、デフォルト値が使用されます。

これを行う方法についてはよくわかりませんが、少し考えました:

したがって、これをコードに入れて、引数でこのコマンドラインを使用すると:

デフォルトでは 10 を使用しますか?

そして、コンパイルでこのコマンドラインを使用すると:

新しい設定として 5 を使用しますか?

これに関するドキュメントを読んでもよくわかりません。