ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
29226
Alechin (17.05.2005 17:41, просмотров: 2367)
Вопрос по inline функциям Имею проект следующего состава: группа 1: файл func_b.h с объявлением функции: char Func_B(void); файл func_b.cpp с определением функции: inline char Func_B(void) { return 5; } группа 2: файл func_a.h с объявлением функции: #include "func_b.h" char Func_A(void); файл func_a.cpp с определением функции: inline char Func_A(void) { return 5 + Func_B(); } основная программа: файл main.h: #include "func_a.h" файл main.cpp: int main() { char i = Func_A(); return 0; } Компилирую - ошибок нет. Листинги обеих файлов с объявлениями функций не содержат src кода, так как он подставляемый. Листинг main.cpp содержит вызов функции Func_A, хотя там должен быть подставлен исходный код Func_A, в которую в свою очередь должен быть подставлен исходный код Func_B. Линкую - ошибка - функция Func_A не определена. При этом если все разместить в одном файле - ошибок нет, коды всех функций подставлены в основную. Такое ощущение, что область видимости inline функции всего файл, где она определена. В хелпе по inline функциям не нашел ничего информативного. В чем может быть причина такого поведения, и как это обойти? На вопрос зачем отвечу - хотел избавиться от кучи макросов (определенных через define), заменяющих несложные действия. Правда при этом в хелпе вычитал примерно следующее - pragma inline отключает эвристический анализатор компилятора - то биш инлайн не отличается от define. Хотя всегда в преимущества инлайн функций как раз и возводили возможность всяческих их проверок компилятором. Это тоже непонятно.