Уже купил(скачал). Моя библиотека насчитывает 96 книг только по C и С++. (отдельно 33 книги по С# и т.д.) И я пролистал их все.
Да кроме книжек я ещё смотрю исходники из разных example. А они просто завалены приставками inline. Eго испльзование в случае многофайловых программ я не встречал в книгах. Почему-то я не подумал, что оператор препроцессора inline может повесить ликовщик.
Хорошо, чуть позже я изготовлю очищенный исходник с этой проблемой и все кто пожелают попробуют его завести. Я не исключаю, что решение лежит где-то на поверхности. Мне было бы очень интересно.
И так моя проблема на пальцах. Рассмотрим две программы:
__________________________________________________ _____________
//Программ №1,которая линкуется
//Реальный код минимального консольного приложения под VC++2005
//File1.cpp
#include "stdafx.h"
#include "2.h"
_myClass myO;
int _tmain(int argc, _TCHAR* argv[])
{
myO.func();
return 0;
}
//File2.h
#include "stdafx.h"
class _myClass{
public:
bool func(void);
};
inline bool _myClass::func(){
return 0;
}
__________________________________________________ _____________
//Программ №2.Это НЕ линкуется!
//File1.cpp
#include "stdafx.h"
#include "2.h"
_myClass myO;
int _tmain(int argc, _TCHAR* argv[])
{
myO.func();
return 0;
}
//File2.cpp
#include "File2.h"
#include "stdafx.h"
inline bool _myClass::func(){
return 0;
}
//File2.h
class _myClass{
public:
bool func(void);
};
__________________________________________________ _____________
Как видно отличия между первой и второй прогой минимальны. Я всего лишь отделил по разным файлам во втором случае объявления от реализации.
Так вот, как же сделать, чтобы код функции func() встраивался без её вызова во втором случае? Или хотябы подскажите, где об этом можно почитать?