Я работаю на языке C и модифицирую код, ранее написанный кем-то другим. Я борюсь с несколькими вещами, и я пытаюсь понять как можно больше о том, что происходит. Итак, как указано в моем вопросе, в чем разница между static inline void
и void
при создании функции? Заранее извиняюсь за длинный пост, но я хотел, чтобы вы знали, что я провел некоторое исследование, но не понимаю, что я нашел.
Я нашел объяснение static
, которое меня смущает:
Статический спецификатор означает, что на функцию нельзя ссылаться из других файлов; то есть имя не экспортируется компоновщиком.
Читая это, я предполагаю, что ссылка на функцию отличается от вызова функции? Я предполагаю, что это потому, что эта функция вызывается из другого файла .c. Если это так, то что ссылается на функцию?
На том же веб-сайте они объясняют встроенные функции, и я не понимаю, что это значит.
Ключевое слово __inline указывает компилятору подставлять код в определение функции для каждого экземпляра вызова функции. Однако подстановка происходит только по усмотрению компилятора. Например, компилятор не встраивает функцию, если ее адрес занят или если она слишком велика для встраивания.
Хм???
Любая помощь приветствуется, и я еще раз прошу прощения за ужасно длинный пост.
Следующее находится в файле file1.c (с использованием общих имен, поскольку я не думаю, что это имеет значение)
COMPLEX cNoiseSample;
CGauss( &cNoiseSample, loopbackRadio->pState );
Следующее находится в файле file2.c
static inline void CGauss( COMPLEX * pcGauss, P_OS_UNIFORM_RAND_STATE pState )
{
//code
}