I am trying to write a generic library in pure c , just some data structures like stack, queue…
In my stack.h when giving name to those functions. I have questions about that.
-
Can I use such name, for example “init” as the function name to init a stack. Will there be something wrong?
-
I know maybe there exist other functions which just do other things and have the same name as “init”. Then would the program be confused, especially when i both include the different init’s headers.
3.I know my worry may be unnecessary, but i still want to know the principle.
Any help is appreciated, thanks.
init() might be okay (if you’re including your library into something else as an actual library, rather than compiling its source in), but it’s better practice to use something like stack_init(), and to prefix your library’s functions with stack_ or queue_, etc.
A program using your library may get confused, depending on the order the libraries are included, see #1.
As far as the principles go, the linker (on Linux, anyway) will look for symbols, and there’s an ordering to how those symbols will be found. For more information, you can check out the man page for dlsym(), and specifically for RTLD_NEXT.