logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Problem z Code Composer Studio i printf

ostrytomasz 07 Paź 2008 13:07 2466 2
REKLAMA
  • #1 5607741
    ostrytomasz
    Poziom 24  
    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:
    
    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).
  • REKLAMA
  • #3 5793159
    sebastiankozub
    Poziom 11  
    hmmm moge sie mylic ale ogolnie przy programowaniu procesorow najpierw trzeba zdefiniowac funkcje putc(char *c), ktora wysyla pojedynczy znak na terminal - reszta funkcji terminalowych korzysta wlasnie z niej a to jak ma wygladac funkcja putc(char *c) zalezy od tego do jakich portow jest podlaczony wyswitlacz i jakiego typu on jest
REKLAMA