I'm still new to C, so I don't have a great understanding of it. Right now I'm trying to figure out pointers.
I want to load the parameters of a structure amqp_connection_info
through the argv
variables. How can I change the load of parameters in the structure?
int main(int argc, const char **argv) {
amqp_connection_state_t conn;
// char const *user;
// char const *password;
// char const *host;
// int port;
// char const *vhost;
int debit_limit;
int message_count;
char const *new_queue = NULL;
char const *new_echange;
char const *echangetype;
char const *cle_liaison;
char const *contenu_message;
static int durable = 1; // La durabilité du queue
if (argc < 13) {
printf("Usage: amqp_producteur utilisateur mdp nom_hote port vhost debit_limit message_count new_queue \
new_echange echangetype cle_liaison contenu_message\n");
return 1;
}
struct amqp_connection_info ci;
// ci : variable globale contenant les paramètres de configuration de connexion
struct amqp_connection_info ci = {
argv[1],
argv[2],
argv[3],
atoi(argv[4]),
argv[5]};
debit_limit = atoi(argv[6]);
message_count = atoi(argv[7]);
new_queue = argv[8]; /* exp:"unroutable" */
new_echange = argv[9]; /* exp:"amq.direct" */
echangetype = argv[10];
cle_liaison = argv[11]; /* exp:"test" */
contenu_message = argv[12]; /* exp:"Message à envoyer" */
// Les routines AMQP
if ((conn = amqp_connexion(&ci)) != NULL)
{
amqp_creation_queue (conn, new_queue, durable);
amqp_creation_echange (conn, new_echange, echangetype, durable);
amqp_production(conn, new_queue, debit_limit, message_count, contenu_message, new_echange, cle_liaison);
amqp_deconnexion(conn);
}
else
{
printf("connexion impossible\n");
}
return 0;
}
When compiling, I had this problem:
amqp_producteur.c: In function 'main':
amqp_producteur.c:60:5: error: initialization discards 'const' qualifier from pointer target type [-Werror]
argv[1],
^
amqp_producteur.c:61:5: error: initialization discards 'const' qualifier from pointer target type [-Werror]
argv[2],
^
amqp_producteur.c:62:5: error: initialization discards 'const' qualifier from pointer target type [-Werror]
argv[3],
^
amqp_producteur.c:63:5: error: initialization makes pointer from integer without a cast [-Werror]
atoi(argv[4]),
^
amqp_producteur.c:63:5: error: (near initialization for 'ci.vhost') [-Werror]
amqp_producteur.c:64:5: error: initialization makes integer from pointer without a cast [-Werror]
argv[5]};
^
amqp_producteur.c:64:5: error: (near initialization for 'ci.port') [-Werror]
cc1: all warnings being treated as errors