1

C++ ヘッダー ファイルをクリーンアップしていて、次のようなことに気付きました。

#if !defined(HEADER_H_)
#define HEADER_H_

#include <vector>
#include <string>

using namespace std;

#include<stdio.h>

#include "Blar/ObjA/Model.h"

namespace blar{
  class Blar;
}

#include <Blar/Blar.h>
#include <Blar/ObjB/OtherModel.h>

using namespace blar;

#include <Utilities/OtherThing.h>  
#include <qstringlist.h>

これは単なる悪い習慣ですか、それとも関連する各宣言の影響の一部は#include/using/namespace実際には順序に依存していますか? 間にコードがないので、そうは思いませんが、あまりにも多くの微妙な点に慣れていません...

4

3 に答える 3

1

ヘッダーが適切に記述されていれば問題ありません。それらに相互依存関係がある場合、大きな違いが生じます。

// header 1
#undef FOO
#define FOO 1

// header 2
#undef FOO
#define FOO 2

これはばかげた例ですが、注意しないと、プリプロセッサを使用せずに同様の競合が発生するのはかなり簡単です。

于 2013-07-11T18:37:53.713 に答える
0

#includeとの順序はusing関係ありません。しかし、コードが読みにくくなるため、良いプログラミング方法ではありません。したがって、すべて#includeの を 1 か所に書き、すべての名前空間を 1 か所に書きます。

元:

#include "stdio.h"
#include "math.h"

using namespace std;
using namespace xyz;
于 2013-07-11T18:48:43.940 に答える