Хорошо, до сих пор я думал, что функции, определенные в заголовочных файлах, обрабатываются как встроенные функции, точно так же, как шаблонные элементы, определенные один раз, и все такое.
Я также использую защиту включения, но я все ещея получил ошибки компоновщика нескольких определенных объектов, и я знаю, что из-за дублирования всех этих разных блоков компоновщик пытается определить, какой элемент является правильным.
Я также знаю, что inline - это просто предложение,и может даже не использоваться компилятором и т. д.
И все же я должен явно определить все эти маленькие функции в этом небольшом наборе инструментов только для заголовков, который я написал.
Даже если функции были огромными,Я должен был бы объявить их встроенными, и компилятор, возможно, все равно мог бы игнорировать подсказку.
И все же я должен их так или иначе определить.
Пример:
#ifndef texture_math_h__
#define texture_math_h__
float TexcoordToPixel(float coord, float dimension)
{
return coord * dimension;
}
float PixelToTexcoord(float pixel, float dimension)
{
return pixel / dimension;
}
float RecalcTexcoord(float coord,float oldDimension, float newDimension)
{
return PixelToTexcoord(TexcoordToPixel(coord,oldDimension),newDimension);
}
#endif // texture_math_h__
Ошибки, блабла, уже определены в xxx.obj, для каждого модуля, который включает файл
Когда я объявляю все эти строки, он связывается правильно.
В чем причина?Это не огромная проблема, и, черт возьми, оптимизация, вероятно, встроенный материал, найденный в cpp, тоже, верно?
Мне просто интересно, почему здесь, надеюсь, что это не слишком много дубликатов, и спасибо за вашвремя.