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…

9 Monaten 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…

10 Monaten 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…

12 Monaten ago

IRMC Console Redirection ohne Lizenz

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

1 Jahr ago

WOL im BIOS aktivieren reicht nicht immer

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

1 Jahr ago

Apache Guacamole mit TOPT – funktioniert nicht

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

1 Jahr ago