我對頭文件的用法有以下懷疑。使用C++頭文件的最佳做法
1 - 包括警衛意見後,將
/* Copyright Note and licence information (multiple lines) */
#ifndef FOO_H
#define FOO_H
// Header file contents
#endif
香草薩特說,在他的「C++編碼標準」預定像上面的代碼是有問題的。他說「#ifndef」語句應該出現在頭文件的第一行。我沒有覺得這是令人信服的。這是否跟在頭文件中的你們/ gals?
2 - 在頭文件
#ifndef FOO_H
#define FOO_H
namespace FooNameSpace{
// Header file contents
}
#endif
使用命名空間採用了正確的做法上面的代碼?我的意思是,你是否在頭文件中使用名稱空間?我知道爲什麼在頭文件中導入一個名字空間是毫無意義的,但是像上面這樣的聲明呢?
如果上面的一個是正確的方法,你如何做一個類在另一個命名空間的「前向聲明」?是像
#ifndef FOO_H
#define FOO_H
namespace AnotherNameSpace{
class AnotherFoo; // forward declaration
}
namespace FooNameSpace{
// Use AnotherFoo here
}
#endif
的「向前聲明」是爲了避免「循環依賴」的唯一方法,正確嗎?
在源文件中,使用「使用」不根本不對,但在頭文件中,這是非常錯誤的。 – 2009-01-04 06:21:48