Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: inline функция
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
d7d1cd
Привет всем. В проекте помимо файла main.cpp есть 2 файла: funct.cpp и funct.h, в которых описаны функции. Из файла main.cpp я вызываю все функции, описанные в указанных файлах. И вот я решил одну из функций сделать inline. Прописав данное слово перед прототипом функции и перед ее реализацией, я получил от компилятора ошибку: extern inline function "Function0" was referenced but not defined. Без слова inline все работает. Подскажите, как победить?
msalov
Переместите inline-функцию в заголовочный файл целиком.
rezident
Цитата(d7d1cd @ Nov 18 2013, 16:08) *
я получил от компилятора ошибку: extern inline function "Function0" was referenced but not defined. Без слова inline все работает. Подскажите, как победить?

inline указывает компилятору, что функцию следует встроить в данный модуль целиком, а не делать ее вызов. Но как компилятор должен встраивать вашу функцию целиком, если в данном модуле эта функция отсутствует, а вместо этого в хидере есть лишь ссылка на нее как на внешнюю функцию? Прототип в хедере сообщает лишь как вызывать функцию (ее адрес) и список аргументов функции. Вообще, вы уверены, что вам эта опция (inline) нужна?
d7d1cd
Спасибо за совет и за объяснения. Я делаю функции, которые будут управлять битами переменной. Так нагляднее в программе, как мне кажется.
rezident
Так может вам макросы (макроподстановки) подойдут, а встраиваемые функции и вовсе не нужны?
d7d1cd
Цитата(rezident @ Nov 18 2013, 17:48) *
Так может вам макросы (макроподстановки) подойдут, а встраиваемые функции и вовсе не нужны?

Расскажите, что это?
mdmitry
Цитата(d7d1cd @ Nov 18 2013, 18:42) *
Расскажите, что это?

Сначала в букваре, что такое макросы.
Затем поищите на тему: макросы Аскольда Волкова.

На форуме этот вопрос всплывал не раз, поиск в помощь. (например)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.