Hi Grant On Tue, 25 Jun 2013, Grant Edwards wrote:
> On 2013-06-25, Grant Edwards <grant.b.edwa...@gmail.com> wrote: > > > I'm working on a new Ethernet driver. eCos kernel/libs (including the > > new drive) build fine. But, when I try to link an application I get a > > bunch of errors because some time-related functions are defined twice. > > They're defined in libtarget where they're supposed to be, but they're > > also getting defined in the object file for my Ethernet driver [and I > > can't figure out why]. I guess you catch some kind of "Library Issue" http://gcc.gnu.org/c99status.html > It's cause by compiling the driver with the -std=gnu99 flag. I a big > fan of limiting the scope of variables and like to use this sort of > construct: > > for (int i=0; i<whatever; ++i) > { > // "i" is only visible inside this block > } > > It appears that eCos header files don't work right when you compile > with C99 semantics... Not only libraries. Many people (me too) are surprised when they look at this table http://en.wikipedia.org/wiki/C99#Implementations -- very few compilers are ready for C99. Of course, if you (your fingers :-) have a habit... Well, you know about C and C++ mix in eCos. If you like for-scope declarations then you would use standard C with a bit of C++ sugar instead C99, eCos way: % grep -Er '\<for\>\s+?\(\s+?\<int\>' $ECOS_REPOSITORY Though then here and there human can miss the needed extern "C" declarations and that is a penalty for the only one C99 habit. Sergei > -- > Grant Edwards grant.b.edwards Yow! I just forgot my whole > at philosophy of life!!! > gmail.com > > > -- > Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos > and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss > -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss