Как известно, ключевое слово static
имеет несколько значений в C. C99 добавило возможность юридически писать
void foo (int arr[static 50])
{
// ...
}
который добавляет к путанице, а С++ имеет статические членные переменные и функции.
Это не было бы так сложно, если бы все виды использования могли быть связаны каким-то образом, но мне трудно найти эту ссылку для некоторых случаев. В частности, почему ключевое слово static
должно использоваться для изменения видимости (привязки) или того, что на самом деле связано с массивом минимального количества элементов.
Итак, существует ли историческая причина злоупотребления ключевым словом static
, или есть секретная ссылка под капотом, которая связывает все его применения?