Я работаю на языке 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
}