inline или static?
От: Rockoos  
Дата: 24.07.08 15:33
Оценка:
Всем привет!

У меня тут возник один вопрос, на который из моих знакомы уверенно так никто и не ответил...

Если объявить функцию inline в хедере, а реалезовать ее в cpp файле, будет ли функции после компиляции inline или компилятор сделает ее static?

Вопрос возник из таких размышлений, допустим у меня есть три файла:

finline.h
---------------
inline int f();


finline.cpp
---------------
#include "finline.h"
inline int f()
{
return <чего не будь>;
}

main.cpp
---------------
#include "finline.h"
int a = f();

inline функция прямой подстановки, допустим finline.cpp скомпилировался в объектник первым, при компиляции main.cpp компилятор подставит finline.h в main.cpp и скомпилирует main.obj. Но дело в том, что тело f() находится в finline.cpp, который уже скомпилирован и соотведственно по логике вещей никакой подстановки произойти не должо и линкер просто должен подставить адрес f() при линковке. Из этого следует вопрос inline должна быть полностью реализованна в хедере?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.