为清楚起见,您是否应该在.cpp文件中包含已包含在.h文件中的所有内容?

时间:2015-11-30 05:23:24

标签: c++

假设我有一些.h文件

random.h

public View getViewByPosition(int pos, ListView listView) {
    final int firstListItemPosition = listView.getFirstVisiblePosition();
    final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1;

    if (pos < firstListItemPosition || pos > lastListItemPosition ) {
        return listView.getAdapter().getView(pos, null, listView);
    } else {
        final int childIndex = pos - firstListItemPosition;
        return listView.getChildAt(childIndex);
    }
}

在相应的cpp文件中我也应该

#ifndef RANDOM_H
#define RANDOM_H

#include <list>
#include <vector>
#include <string>

class Random {
  std::vector<std::list<std::string> > m_vectorList;
}

#endif

这样,无论是谁在进行实现,都不需要回头看头文件,或者将它包含两次是不好的做法?

3 个答案:

答案 0 :(得分:5)

基本上没有必要这样做,即使节省时间,因为:

  

程序员需要查看头文件。实际上,头文件是我在发现新程序时要查看的第一个文件。 - Basile Starynkevitch

答案 1 :(得分:2)

不仅是不好的做法,如果头文件没有包含警戒(#ifndef / #define / #endif),它会抛出编译器错误。

答案 2 :(得分:1)

您正在定义新标头。所以你不需要两次包含预定义的标题。这是合乎逻辑的。虽然您可以在新的头文件或.cpp文件中包含预定义的头。如果由于#ifdef条件而定义了两次,它也会抛出编译器错误。

#define 

#ifdef
#endif

#ifndef
     #define
#endif