Re:RGFW: Single-header C99 window abstraction library
by tredre3 on Saturday November 23, 2024 @09:49PM
(#42225591)
I actually agree with you that single-header libs are often not ideal. They're kind of neat in concept: just copy paste and done!
But after being burned a few times by naming or linking conflicts or you cloned your .c and forgot to remove the #define and now you have two implementations or having to debug any BSS/DATA/TEXT issues (because now lib and user code end up in the same .o and the linker can't do its magic for your esoteric architecture), I just took the habit of always manually creating a matching .c that only contains:
#define BLAH_IMPLEMENTATION
#include "blah.h"
Re:RGFW: Single-header C99 window abstraction library
by colleagueRiley on Saturday November 23, 2024 @10:31PM
(#42225733)
Well for one you're able to easily use macros to customize features you want and don't want. Plus "forcing me to figure out the specific XYZ_IMPLEMENTATION" is a big of a weird compliant. You could say the same thing about linking a library. Besides, it's not hard to figure out and is usually one of the first lines of the file.
The single-header format also gives you MORE ways to compile the library and control which features to use or not use.
Re:RGFW: Single-header C99 window abstraction library
by uecker on Sunday November 24, 2024 @10:45AM
(#42228480)
I am not say it is hard. But I find having a .c/.h pair more useful and easier to work with.
Re:RGFW: Single-header C99 window abstraction library
by colleagueRiley on Sunday November 24, 2024 @11:44AM
(#42228791)
No lol
Re:RGFW: Single-header C99 window abstraction library
by uecker on Sunday November 24, 2024 @01:04PM
(#42229267)
Because looking up a macro name for each library is easier than adding a c file to your makefile? You could still always do
#include "impl.c"
and this would still be nicer than #define XZUGG_IMPL
#include "impl.h"
In any case, forcing me to figure out the specific XYZ_IMPLEMENTATION for each library is less user friendly that just proving a .c and .h file.