Variable globale en c
Résolu
virus321
-
virus321 -
virus321 -
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
- Vba range avec variable ✓ - Forum VB / VBA
- Variable d'environnement temp ✓ - Forum Microsoft Office
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
- Variable objet ou bloc "with" non définie - Forum VB / VBA
11 réponses
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...
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
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
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
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.