c++ - Conflict of include files from an Arduino library -
i'm writing arduino libraries , have folder structure follows:
libraries +foo -foo.h -helper.h +bar -bar.h -helper.h +helper -helper.h foo , bar libraries created. reasoning behind putting helper.h in folders that, end user have easier time getting libraries work. also, libraries can configured having source code edited.
however, if write #include <helper.h> in sketch, it'll impossible control "helper.h" i'm including.
is there way hide helper.h foo , bar sketches?
the obvious answer is: don't write #include <helper.h>. files aren't part of implementation, , should included using #include "helper.h". if this, first place compiler include file in directory containing file including it: if include foo/foo.h, compiler pick foo/helper.h; if include bar/bar.h, compiler pick bar/helper' , on.
client code should set include path root, , things #include "foo/foo.h"; if necessary, can #include "foo/helper.h".
the 1 thing have strategy ensure uniqueness of of header guards. if application, sufficient mangle path include guard, e.g. use foo_helper_h, instead of foo_h. alternatively (and use library third parties should use), generate random string include guard. (if open file named abc.h doesn't exist, editor automatically generates following boilerplate:
/********************************************************/ /* file: abc.h */ /* author: j. kanze */ /* date: 02/05/2013 */ /* ---------------------------------------------------- */ #ifndef abc_h_20130502o481mbxfzeazz4dgib7ic4q9 #define abc_h_20130502o481mbxfzeazz4dgib7ic4q9 #endif it's safe bet include guard here never conflict other. (and have along these lines anyway, in order copyright message in file.)
Comments
Post a Comment