Код: Выделить всё
#include
template
void func(T value, char * p_rtn, uint8_t rtn_len);
< /code>
util.cpp
#include "util.h"
uint32_t useless_global;
template
void func(T value, char * const p_rtn, const uint8_t rtn_len) {
useless_global += sizeof(value);
}
template void func< 2>(uint32_t value, char * p_rtn, uint8_t rtn_len);
template void func(uint32_t value, char * p_rtn, uint8_t rtn_len);
template void func(uint32_t value, char * p_rtn, uint8_t rtn_len);
template void func< 2>(uint64_t value, char * p_rtn, uint8_t rtn_len);
template void func(uint64_t value, char * p_rtn, uint8_t rtn_len);
template void func(uint64_t value, char * p_rtn, uint8_t rtn_len);
// uncommenting this resolves the compiler error.
//template void func(unsigned int value, char * p_rtn, uint8_t rtn_len);
< /code>
test.cpp
#include "util.h"
int main() {
char buff[128];
func(sizeof(unsigned int), buff, 128);
}
< /code>
Arm-none-eabi-c ++ говорит мне < /p>
test.cpp:(.text+0x1c): undefined reference to `void func(unsigned int, char*, unsigned char)'
Подробнее здесь: https://stackoverflow.com/questions/793 ... signed-int