Variable globale en c
Résolu/Fermé
A voir également:
- Variable globale en c
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Windows 10
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ✓ - Forum Python
- Variable d'environnement TEMP ✓ - Forum Windows 7
11 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
30 août 2010 à 14:00
30 août 2010 à 14:00
Tu es bien sûr que ta variable rc est bien définie dans le même fichier que la fonction init ?
De plus, je vois un #ifdef et je ne vois pas le #endif...
De plus, je vois un #ifdef et je ne vois pas le #endif...
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
30 août 2010 à 12:27
30 août 2010 à 12:27
Bonjour,
Pouvez-vous donner le message d'erreur complet ? Car là, on ne voit pas dans quelle fonction est obtenue l'erreur.
Sinon, il faut faire attention. Vous redéclarez rc; dans la fonction ThreadJoin, ainsi la variable globale est masquée dans cette fonction.
Pouvez-vous donner le message d'erreur complet ? Car là, on ne voit pas dans quelle fonction est obtenue l'erreur.
Sinon, il faut faire attention. Vous redéclarez rc; dans la fonction ThreadJoin, ainsi la variable globale est masquée dans cette fonction.
en effet je me suis trompé :
l'erreur ne viens pas de la fonction threadjoin mias plutot de la fonction Init:
<code>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <time.h>
#include "SWIrecAPI.h"
#include "SWIepAPI.h"
#define MAX_AUDIO_BUF_LEN 2000
#define MAX_EP_AUDIO_BUF_LEN 2000
#define NUM_AUDIO_BUFS 5
#define MAGIC_WORD 0 /* switch to 1 for magic word demo */
#ifdef WIN32 /* Windows NT */
#include <windows.h>
#include <process.h>
#define RETURN_TYPE unsigned int
typedef unsigned int (__stdcall *ThreadFunc)(void* userData);
#define usleep(x) Sleep(x / 1000)
#define DEFINE_THREAD_FUNC(funcName, userData) \
unsigned int (__stdcall funcName)(void *userData)
#define Thread HANDLE
SWIrecFuncResult rc;
SWIrecRecognizer *rec =NULL;
SWIepDetector *det;
wchar_t *channelName = L"1";
int ThreadCreate(Thread* thread, ThreadFunc start_function, void* arg)
{
*thread = (Thread)_beginthreadex(NULL, 0, start_function, arg, 0, NULL);
return 0;
}
int ThreadJoin(Thread* thread, void* status)
{
int rc;
switch (WaitForSingleObject(*thread, INFINITE)) {
case WAIT_OBJECT_0:
case WAIT_ABANDONED:
rc = 0;
break;
case WAIT_TIMEOUT:
default:
rc = 1;
break;
}
CloseHandle(*thread);
return rc;
}
int init(){
printf ("\n Calling SWIrecInit.\n");
rc = SWIrecInit(get_sample_baseline_cfg());
check_rc ("SWIrecInit", rc);
printf ("\n Calling SWIepInit.\n");
if(SWIepInit() != SWIep_RESULT_SUCCESS) {
printf("\n SWIepInit failed\n");
}
printf ("\n Calling SWIrecRecognizerCreate.\n");
rc=SWIrecRecognizerCreate(&rec,NULL,NULL);
check_rc("SWIrecRecognizerCreate",rc);
printf ("\n Calling SWIepDetectorCreate.\n");
rc = SWIepDetectorCreate(&det);
check_rc("SWIepDetectorCreate",rc);
printf ("\n Calling SWIrecSessionStart.\n");
rc = SWIrecSessionStart(rec, channelName, L"");
check_rc ("SWIrecSessionStart", rc);
}
Voila et pour le message d'erreur j'ai que rc undeclared first use this function
y'a pas autre chose !
remarque : dans la fonction Init tout les rc sont souligné en rouge dans eclipse
l'erreur ne viens pas de la fonction threadjoin mias plutot de la fonction Init:
<code>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <time.h>
#include "SWIrecAPI.h"
#include "SWIepAPI.h"
#define MAX_AUDIO_BUF_LEN 2000
#define MAX_EP_AUDIO_BUF_LEN 2000
#define NUM_AUDIO_BUFS 5
#define MAGIC_WORD 0 /* switch to 1 for magic word demo */
#ifdef WIN32 /* Windows NT */
#include <windows.h>
#include <process.h>
#define RETURN_TYPE unsigned int
typedef unsigned int (__stdcall *ThreadFunc)(void* userData);
#define usleep(x) Sleep(x / 1000)
#define DEFINE_THREAD_FUNC(funcName, userData) \
unsigned int (__stdcall funcName)(void *userData)
#define Thread HANDLE
SWIrecFuncResult rc;
SWIrecRecognizer *rec =NULL;
SWIepDetector *det;
wchar_t *channelName = L"1";
int ThreadCreate(Thread* thread, ThreadFunc start_function, void* arg)
{
*thread = (Thread)_beginthreadex(NULL, 0, start_function, arg, 0, NULL);
return 0;
}
int ThreadJoin(Thread* thread, void* status)
{
int rc;
switch (WaitForSingleObject(*thread, INFINITE)) {
case WAIT_OBJECT_0:
case WAIT_ABANDONED:
rc = 0;
break;
case WAIT_TIMEOUT:
default:
rc = 1;
break;
}
CloseHandle(*thread);
return rc;
}
int init(){
printf ("\n Calling SWIrecInit.\n");
rc = SWIrecInit(get_sample_baseline_cfg());
check_rc ("SWIrecInit", rc);
printf ("\n Calling SWIepInit.\n");
if(SWIepInit() != SWIep_RESULT_SUCCESS) {
printf("\n SWIepInit failed\n");
}
printf ("\n Calling SWIrecRecognizerCreate.\n");
rc=SWIrecRecognizerCreate(&rec,NULL,NULL);
check_rc("SWIrecRecognizerCreate",rc);
printf ("\n Calling SWIepDetectorCreate.\n");
rc = SWIepDetectorCreate(&det);
check_rc("SWIepDetectorCreate",rc);
printf ("\n Calling SWIrecSessionStart.\n");
rc = SWIrecSessionStart(rec, channelName, L"");
check_rc ("SWIrecSessionStart", rc);
}
Voila et pour le message d'erreur j'ai que rc undeclared first use this function
y'a pas autre chose !
remarque : dans la fonction Init tout les rc sont souligné en rouge dans eclipse
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
30 août 2010 à 12:56
30 août 2010 à 12:56
La fonction init() est-elle dans le même fichier ou dans un fichier à part ?
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
Modifié par Char Snipeur le 30/08/2010 à 12:54
Modifié par Char Snipeur le 30/08/2010 à 12:54
quel compilateur ? message d'erreur complet.
Là comme ça il n'y a pas de raison. Il manque peut être une accolade, un ";" ou autre chose.
essai de compiler ce code :
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur
Là comme ça il n'y a pas de raison. Il manque peut être une accolade, un ";" ou autre chose.
essai de compiler ce code :
int rc; void INIT() { rc+=1; } int main() { rc=5; printf("%d\n",rc); init(); printf("%d\n",rc); return 0; }
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bah j'utilise eclipse avec Cygwin ! moi aussi je trouve pas d'erreur je vais essayé de regarder s'il y a un ; qui manque ou autre chose! pourtant c'a étonnerais car éclipse remarque ces erreur d'habitude
Gaunts
Messages postés
1125
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
18 mars 2012
116
Modifié par Gaunts le 30/08/2010 à 13:30
Modifié par Gaunts le 30/08/2010 à 13:30
Bonjour,
Je n'ai pas de compilateur sous la main, je ne peux donc pas tester, évite de masquer ta globale rc avec le:
Je ne suis pas sur que ça change grand chose, mais à part ça je ne vois pas d'ou le problème peut venir
Je n'ai pas de compilateur sous la main, je ne peux donc pas tester, évite de masquer ta globale rc avec le:
int rcdans ThreadJoin.
Je ne suis pas sur que ça change grand chose, mais à part ça je ne vois pas d'ou le problème peut venir
:) bah on est deux à ne pas trouver l'erreur
Gaunts
Messages postés
1125
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
18 mars 2012
116
30 août 2010 à 13:45
30 août 2010 à 13:45
L'erreur est toujours là si tu ne masque pas la variable?
Gaunts
Messages postés
1125
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
18 mars 2012
116
30 août 2010 à 13:49
30 août 2010 à 13:49
L'erreur vient peut-être du type de rc, passe "SWIrecAPI.h" et "SWIepAPI.h" au peigne fin
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
30 août 2010 à 14:07
30 août 2010 à 14:07
je te conseille de supprimer des lignes à ton programme, jusqu'à tomber sur le programme minimal qui plante. Ainsi, tu simplifie le problème, et on pourra regarder et tester chez nous.
exactement ça viens de ce petit truc, y a bien un #ifdef , mais j'ai déclarer les variable dedans du coup il le vois pas dans l'autre partie du code.
Problème résolu merci
Problème résolu merci
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
30 août 2010 à 14:15
30 août 2010 à 14:15
C'est le problème lorsqu'on ne donne pas le code en entier : on piétine.