Używam CCS w wersji 3.3.38.2 z procesorem z rodziny C64+. Kompiluję projekt w trybie C i korzystam ze standardowych bibliotek (na miniprintf już się wcześniej przejechałem). Poniższy kawałek kodu daje u mnie nieprawidłowy efekt:
Po wykonaniu buf zaczyna się od dodatkowego znaku o kodzie 0, GCC i BC generują kod poprawnie (buf i buf2 są identyczne).
Jeżeli ktoś ma dostęp do Code Composer Studio (najlepiej w wersji dla podobnej rodziny procesorów) prosiłbym o potwierdzenie/zaprzeczenie występowania problemu.
Nie chciałbym rezygnować z formatowania %.*s - jest to użyte w kodzie którego wolałbym nie ruszać około 200 razy (następstwo użycia łańcuchów które nie są null-terminated).
char buf[256], buf2[256];
char *ptr = (char*)0;
int test = snprintf(buf, sizeof(buf),
"%.*s123456789",
0,
ptr);
ptr = (char*)0x04000000;
test = snprintf(buf2, sizeof(buf2),
"%.*s123456789",
0,
ptr);
printf("buf: %s\r\n", buf);
printf("buf2: %s\r\n", buf2);
Po wykonaniu buf zaczyna się od dodatkowego znaku o kodzie 0, GCC i BC generują kod poprawnie (buf i buf2 są identyczne).
Jeżeli ktoś ma dostęp do Code Composer Studio (najlepiej w wersji dla podobnej rodziny procesorów) prosiłbym o potwierdzenie/zaprzeczenie występowania problemu.
Nie chciałbym rezygnować z formatowania %.*s - jest to użyte w kodzie którego wolałbym nie ruszać około 200 razy (następstwo użycia łańcuchów które nie są null-terminated).