Re: struct timeval
河野真治 @ 琉球大学情報工学です。
In article <040823214356.M0123228@sma.gssm.otsuka.tsukuba.ac.jp>, kuno@gssm.otsuka.tsukuba.ac.jp writes
> そ、そうなの。二重include対策はお約束と思ってた。 久野
僕は「#ifndef _HOGE_H_」は、やるなって教えることが多い。
でも、
class_a.h
#include <class_b.h>
struct class_a { struct class_b *b; }
class_b.h
#include <class_a.h>
struct class_b { struct class_a *a; }
みたいなことをやる学生がいるんで、結構、困るんですよね。
(これを通すためには、#ifndef だけではだめで少し工夫がいるんだけど)
それでも C を使わなきゃいけないのって、なんか不幸。じゃ、
C++ の方が良いかっていうと、どうしても、C++ の(一見便利で
実は邪悪な...) 機能を使う人がでて来ちゃって。
> > 更にそういう実装では、<time.h> が二重 include に堪える仕様
> > になっていないことが多く、結果として二重定義等の error が発
> > 生して compile に失敗してしまうんです。
そのあたりは、最初に教えるときは言わない方が良いと思う。
言いたくなるのはわかるんだけど。僕も最初はそうだったし。
---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735