Код: Выделить всё
// arm-none-eabi-g++ -std=c++14 -O3 -Wall -fno-rtti -fno-exceptions
#include
#include
#include
#include
void TransmitViaUartAndDma(const char * buffer, int len) {
// "Embedded World"
(void)buffer;
(void)len;
}
constexpr std::size_t buf_size = 64; // = sizeof(buffer)/sizeof(buffer[0])
std::array buffer{};
template
void Print(Arg&& arg, Args&&... args) {
std::array tmp{};
int len = std::snprintf(tmp.begin(), buffer.size(),
"%s"
"\n",
std::forward(arg));
// std::printf("len = %d\n", len);
len = std::snprintf(buffer.begin(), buffer.size(),
tmp.cbegin(),
std::forward(args)...);
// std::printf("len = %d\n", len);
TransmitViaUartAndDma(buffer.cbegin(), len);
}
int main() {
std::uint32_t val1{222};
std::uint32_t val2{111};
Print("%u. %u. Hello, ", val1, val2);
// std::printf(buffer.cbegin());
Print("%u. %u. World!", val2, val1);
// std::printf(buffer.cbegin());
return 0;
}
// 222. 111. Hello,
// 111. 222. World!
Встроенное
Примечание: я не могу использовать std::cout.
Подробнее здесь: https://stackoverflow.com/questions/791 ... al-call-an