Para mim, o uso da palavra-chave staticem C e idiomas como C # e Java são "falsos amigos", como "tornar-se" em inglês e "bekommen" em alemão (= "obter" em inglês), porque significam coisas diferentes.
Em C static, significa que a função ou variável é acessível apenas através de funções dentro do mesmo arquivo de origem, comparável a privatefunções e membros em C ++, Java e C #.
Em C ++, Java e C # staticsignifica que os métodos não são membros de uma instância de classe, mas efetivamente são mais ou menos como funções C mais espaço para nome.
IMHO esses dois conceitos são bem diferentes, então por que os designers de C ++ e mais tarde Java e C # escolheram a staticpalavra - chave para esse comportamento? Existe uma conexão lógica que eu sinto falta?
EDIT
Eu sei, que staticem C não governa a acessibilidade de maneira semelhante à privatedo C ++, mas pode ser usado dessa maneira, consulte https://stackoverflow.com/a/1479639/124983