Question: 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.

1. Can I use such name, for example "init" as the function name to init a stack. Will there be something wrong?
2. 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.

Answer: 
There might be existing libraries doing what you want (e.g. [Glib](http://developer.gnome.org/glib)). At least, study them a little before writing your own.

If you claim to develop a generic reusable C library, I suggest having naming conventions. For instance, have all the identifiers (notably function names, typedef-s, struct names...) share some common prefix.

Be systematic in your naming conventions. For instance, initializers for stacks and for queues should have similar names & signatures, and end with `_init`. Document your naming conventions.

Define very clearly how should data be allocated and released. Who and when should call free?
Function names in C are global. If two functions in a program have the same name, the program should fail to compile. (Well, sometimes it fails at link time, but the idea still holds.)

Generally, you get around this problem by using some sort of prefix or suffix on the function names in your library. "apporc\_stack\_init()" is much less likely to collide with something than "init()" is.