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

Yes, if anyone else wants a function named `init`.

> 
> I know my worry may be unnecessary, but i still want to know the
>  principle
> 
> 
> 

Your worry is necessary, this (the lack of namespaces) is a serious problem in C.

* Export as few functions as possible. Make everything `static` if you can
* Prefix function names with something. For instance, instead of `init`, try `stack_init`
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.