Summary: you can, but should not.
C and C ++ code is pre-processed before compilation: all headers are “inserted” into the source files that include them, recursively. If you define a function in the header and include two C files, you will get two copies in each object file ( violation of rule 1).
, static, . , , .
++ : static, , , , , ( "" ).
C , (, queue(3)). ++ , , C.