Arm gcc uint32_t! = Unsigned intC++

Программы на C++. Форум разработчиков
Anonymous
Arm gcc uint32_t! = Unsigned int

Сообщение Anonymous »

Я не уверен, что здесь происходит, надеясь, что кто -то сможет просветить меня. , для которого я объявляю ограниченную семью специализаций, в том числе для аргументов UIN32_T. Когда я пытаюсь вызвать эту функцию с помощью аргумента «Unsigned Int», линкера GCC говорит, что не может найти такую ​​функцию. Я проверил, Uint32_T и «Unsigned Int» оба имеют 4 байта на мою кору руки. Почему они не взаимозаменяемы? PrettyPrint-Override ">#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>
Я собрал его как: < /p>
arm-none-eabi-c++.exe -Wall -std=c++20 -o main .\test.cpp .\util.cpp
< /code>
Arm-none-eabi-c ++ говорит мне < /p>
C:\SiliconLabs\SimplicityStudio\v5_2\developer\toolchains\gnu_arm\12.2.rel1_2023.7\bin\arm-none-eabi-c++.exe -Wall -std=c++20 -o main .\test.cpp .\util.cpp

test.cpp:(.text+0x1c): undefined reference to `void func(unsigned int, char*, unsigned char)'
< /code>
Если я составляю это с Windows g ++, ошибки нет. Файл заголовка? », Но это другое. user4581301 упоминает "util.cpp определяет явные экземпляры, которые должны покрывать эту проблему."


Подробнее здесь: https://stackoverflow.com/questions/793 ... signed-int

Вернуться в «C++»