4

EclipseがC プロジェクトで新しいファイル ( .cまたは.h#defineファイル) を作成すると、エディターは常に次のようにファイルの先頭に を#define自動作成します。このようなファイルの

#ifndef MYCFILE_C_
#define MYCFILE_C_

私は他の編集者もこれを行っているのを見てきました (Codewright と SlikEdit だと思います)。#defines問題なく削除できるので、エディターに対して何もしていないようで、それらを使用する理由が思いつきませ 。なぜそこにいるのか誰か知っていますか?

4

4 に答える 4

4

複数の定義を防ぐためです。

于 2008-09-01T09:43:02.727 に答える
2

.c ファイル全体を他の .c ファイル (または .h ファイル) にインクルードすることがあります。そのため、インクルード ファイルが複数回インクルードされ、コンパイラが複数の定義エラーを吐き出すのを防ぐというまったく同じ目的があります。

ただし、これを .h ファイル以外に配置することがエディターのデフォルトの動作になるのは奇妙です。これはめったに必要とされない機能です。

于 2008-09-01T09:46:05.857 に答える
1

これのより現代的なバージョンは使用することです:

#pragma once

これが.cファイルに表示されることは非常にまれで、通常はヘッダーファイルにのみ表示されます。

于 2008-09-01T20:54:05.097 に答える
0

インクルードチェーンに細心の注意を払っていない限り、ソースの複数のコピーが含まれるCインクルードの問題の逆行だと思います(1つのファイルには他が含まれていません)。シンボルが定義されているかどうかを確認し、シンボルが定義されている場合にのみ含めることは、これを回避する方法でした。

于 2008-09-01T09:43:06.160 に答える