假设我有一些.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
这样,无论是谁在进行实现,都不需要回头看头文件,或者将它包含两次是不好的做法?
答案 0 :(得分:5)
基本上没有必要这样做,即使节省时间,因为:
程序员需要查看头文件。实际上,头文件是我在发现新程序时要查看的第一个文件。 - Basile Starynkevitch
答案 1 :(得分:2)
不仅是不好的做法,如果头文件没有包含警戒(#ifndef
/ #define
/ #endif
),它会抛出编译器错误。
答案 2 :(得分:1)
您正在定义新标头。所以你不需要两次包含预定义的标题。这是合乎逻辑的。虽然您可以在新的头文件或.cpp文件中包含预定义的头。如果由于#ifdef
条件而定义了两次,它也会抛出编译器错误。
#define
#ifdef
#endif
#ifndef
#define
#endif