Categories: Linux

warning: deprecated conversion from string constant to ‘char*’

Ich bin gerade dabei mich ein wenig in C/C++ einzuarbeiten, für das eine oder andere Tool ist’s dann doch ganz praktisch wenn man’s in C/C++ schreiben kann. Und auch bei Problemen mit dem Compilieren von Programmen soll es helfen wenn man weiß was die Fehlermeldungen bedeuten 🙂

Eine einfache und gute Kurzanleitung wie man mit C auf das API von Mysql zugreifen kann habe ich hier gefunden.

Allerdings hat das ganze bei mir erst mal ein paar Fehlermeldungen beim Compilieren geliefert!

gcc -o mysql_test $(mysql_config –cflags) mysql_test.cpp $(mysql_config –libs)
mysql_test.cpp: In function ‘int main()’:
mysql_test.cpp:10: warning: deprecated conversion from string constant to ‘char*’
mysql_test.cpp:11: warning: deprecated conversion from string constant to ‘char*’
mysql_test.cpp:12: warning: deprecated conversion from string constant to ‘char*’
mysql_test.cpp:13: warning: deprecated conversion from string constant to ‘char*’
mysql_test.cpp:21: error: ‘exit’ was not declared in this scope
mysql_test.cpp:27: error: ‘exit’ was not declared in this scope

Nach ein wenig Suche bin ich auf die Lösung gestoßen, der gcc ab 4.3 braucht den Include „#include “ sonst kennt er „exit“ nicht.

Anschließend sieht die Fehlermeldung wie folgt aus:

mysql_test.cpp: In function ‘int main()’:
mysql_test.cpp:11: warning: deprecated conversion from string constant to ‘char*’
mysql_test.cpp:12: warning: deprecated conversion from string constant to ‘char*’
mysql_test.cpp:13: warning: deprecated conversion from string constant to ‘char*’
mysql_test.cpp:14: warning: deprecated conversion from string constant to ‘char*’
/tmp/ccwZLvOo.o:(.data.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0): undefined reference to `__gxx_personality_v0′

Also auch noch nicht alles weg, das „warning“ ist recht schnell beseitig – einfach die vier zeilen mit ‚char *server = „localhost“;‘ in ‚const char *server = „localhost“;‘ umschreiben, also ein „const“ davor setzen und schon bleibt nur noch die letzte Meldung.

Die wiederum kriegt man weg in dem man beim gcc noch folgendes mit angibt „-lstdc++“ und schon klappt der Compile wie gewünscht und auch das Programm liefert ein passendes Ergebnis!

Hier noch einmal das komplette Listing:

/* Simple C program that connects to MySQL Database server*/
#include <cstdlib>
#include <mysql.h>
#include <stdio.h>

main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;

const char *server = „localhost“;
const char *user = „root“;
const char *password = „password“; /* set me first */
const char *database = „mysql“;

conn = mysql_init(NULL);

/* Connect to database */
if (!mysql_real_connect(conn, server,
user, password, database, 0, NULL, 0)) {
fprintf(stderr, „%sn“, mysql_error(conn));
exit(1);
}

/* send SQL query */
if (mysql_query(conn, „show tables“)) {
fprintf(stderr, „%sn“, mysql_error(conn));
exit(1);
}

res = mysql_use_result(conn);

/* output table name */
printf(„MySQL Tables in mysql database:n“);
while ((row = mysql_fetch_row(res)) != NULL)
printf(„%s n“, row[0]);

/* close connection */
mysql_free_result(res);
mysql_close(conn);
}

Und compiliert wird mit:
gcc -lstdc++ -o mysql_test $(mysql_config –cflags) mysql_test.cpp $(mysql_config –libs)

Vorausgesetzt das Paket „libmysqlclient15-dev“ ist installiert, sonst funktioniert das mysql_config Script nicht!

Manfred

Recent Posts

VM – ZFS Partition online vergrößern

Man macht es nicht jeden Tag, darum schadet es nicht sich's kurz zu notieren... Hier…

1 Jahr ago

Samba Password History für einen User löschen

Meine Suche bei Google hatte mal wieder keinen vernünftigen Treffer gelandet, das Problem - ich…

1 Jahr ago

HP Eine Firma von der ich nicht mal geschenkte Drucker nehmen würde!!!

Ich muss mal eben etwas Druck ablassen, ein Kunde von mir setzt einen Drucker von…

2 Jahren ago

IRMC Console Redirection ohne Lizenz

Wer beim Server bestellen vergessen hat die erweiterte IRMC Lizenz zu ordern, der steht vor…

2 Jahren ago

WOL im BIOS aktivieren reicht nicht immer

Ich nutze seit langer Zeit ein System für meine Backups welches in der Nacht von…

2 Jahren ago

Apache Guacamole mit TOPT – funktioniert nicht

Es scheint wohl eine noch nicht so häufig genutzte Kombination zu sein - Apache Guacamole…

2 Jahren ago