Konstante in Stringkonstante einfügen?

OP #814464
Lesenswert?

Hi!

Ich habe eine Konstante die ich mit #define Temperatur 180 definiere. 
Nun möche ich den eingestellten Wert über UART senden. Kann ich die 
Konstante irgendwie in die zu sendende Stringkonstante einfügen?
1
  rs232_send("Blabla ganz normaler Text");
2
  rs232_send("Temperatur: "+Temperatur+"°C");

so zum Beispiel (leider funktioniert das so halt nicht).

lg PoWl
OP #814498
Lesenswert?

Danke #2;
1
  char con;
2
  sprintf(con, "Temperatur: %u °C", Temperatur);
3
  rs232_send(con);

so hab ich das nun. Ich bekomme allerdings immernoch Warnings und das 
Programm scheint sich in eine Endlosschleife zu verfangen und sendet nur 
Müll.

../Laminatorsteuerung.c:67: warning: passing argument 1 of 'sprintf' 
makes pointer from integer without a cast

../Laminatorsteuerung.c:68: warning: passing argument 1 of 'rs232_send' 
makes pointer from integer without a cast

Was heißt denn makes pointer from integer. Macht einen Zeiger aus einem 
Integer?

../Laminatorsteuerung.c:67: warning: 'con' is used uninitialized in this 
function

Das dürfte ja nicht weiter stören.

lg PoWl
#814515
Lesenswert?

Hallo,

char con defniert con als char, also 1 Byte.

Wie willst Du da den String "Temperatur: %u °C" drin unterbringen?

sprintf erwartet wohl einen Zeiger auf den String bzw. das char-Array 
als ersten Parameter.

rs232send(con) soll was senden? Ein Byte? Den String?

PS: immernoch beim ASM programmieren und bei etwas C üben, also bitte 
die Kommentare der anderen beachten...

Gruß aus Berlin
Michael
#815481
Lesenswert?

Thomas W. wrote:
> Wie bekomme ich denn dieses übersetzt:
>
1
> #define HERE "Entering " __PRETTY_FUNCTION__ "()"
2
> printf(HERE);
3
>
> printf() soll durch jede andere Funktion die einen String ausgibt
> ersetzt werden können.

Seit gcc 3.4 ist _PRETTY_FUNCTION_ kein string literal mehr sondern 
expandiert zu einer Variable, darum geht das mit der string 
Konkatenation nicht. Du brauchst so etwas wie das hier:
1
const char *my_here(const char *h) 
2
{
3
 static char buf[40];
4
 snprintf(buf,sizeof(buf),"Entering %s()\n",h);
5
 return buf; 
6
}
7

8
#define HERE my_here(__PRETTY_FUNCTION__)
oder
1
#define PRINT_HERE printf("Entering %s()\n",__PRETTY_FUNCTION__);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren