probleem met code, herkent variablelen niet

Status
Niet open voor verdere reacties.

fsasfsas

Gebruiker
Lid geworden
11 sep 2006
Berichten
429
Dag allemaal

Ik heb een probleem waar ik wanhopig van word:(. Ik ben al een hele poos aan het zoeken maar ik zie niet waar de fout zit.
Ik gebruik de microsoft visual studio (c++) express 2008 en heb hier inmiddels een tijdje geleden een werkend stuk code in geschreven.

Ik wil het nu uitbreiden maar op de een of andere manier herkent ie geen enkele variabele meer die ik toevoeg.

Hieronder staat een voorbeeld (inmiddels letterlijk uit het programma overgenomen). Ik roep deze functie aan (zoals jullie zien doet ie niks maar het gaat me om het principe) maar de debugger herkent i,j en k niet. Normaal gesproken krijg ik de waarde van een bepaalde variable als ik er op ga hangen met de muis maar in dit geval niet. Ik kan 'm ook niet aan de debugger toevoegen met "add watch" (althans, dat gaat wel maar dan krijg ik bv
error: symbol "j" not found).

Nogmaals, onderstaande code is een voorbeeld maar geeft hopelijk aan wat ik bedoel. Voor de volledigheid: de functie is bovenin het programma gedeclareerd.

Het moet toch iets heel simpels zijn dat ik over het hoofd zie maar ik kan het niet vinden.

Kan iemand mij aub helpen?

met dank, Anjo

Code:
/****************************************************************************/
void testfunctie (void)
/****************************************************************************/
{
	int i = 0;
	int j = 1;
	int k;
	k=i+j;
	printfwin ("\r\n");

}
 
Dag allemaal

Ik heb een probleem waar ik wanhopig van word:(. Ik ben al een hele poos aan het zoeken maar ik zie niet waar de fout zit.
Ik gebruik de microsoft visual studio (c++) express 2008 en heb hier inmiddels een tijdje geleden een werkend stuk code in geschreven.

Ik wil het nu uitbreiden maar op de een of andere manier herkent ie geen enkele variabele meer die ik toevoeg.

Hieronder staat een voorbeeld (inmiddels letterlijk uit het programma overgenomen). Ik roep deze functie aan (zoals jullie zien doet ie niks maar het gaat me om het principe) maar de debugger herkent i,j en k niet. Normaal gesproken krijg ik de waarde van een bepaalde variable als ik er op ga hangen met de muis maar in dit geval niet. Ik kan 'm ook niet aan de debugger toevoegen met "add watch" (althans, dat gaat wel maar dan krijg ik bv
error: symbol "j" not found).

Nogmaals, onderstaande code is een voorbeeld maar geeft hopelijk aan wat ik bedoel. Voor de volledigheid: de functie is bovenin het programma gedeclareerd.

Het moet toch iets heel simpels zijn dat ik over het hoofd zie maar ik kan het niet vinden.

Kan iemand mij aub helpen?

met dank, Anjo

Code:
/****************************************************************************/
void testfunctie (void)
/****************************************************************************/
{
	int i = 0;
	int j = 1;
	int k;
	k=i+j;
	printfwin ("\r\n");

}

printfwin ("\r\n");

waarom gebruik je dat?

maar goed, je hebt er verder nooit last van enzo dat iets geen variablen ziet

ik probeer je script uit en als ik printfwin vervang door cout krijg ik 0 errors
 
waarom gebruik je dat?

maar goed, je hebt er verder nooit last van enzo dat iets geen variablen ziet

ik probeer je script uit en als ik printfwin vervang door cout krijg ik 0 errors

ik had de fout in een ander stuk code en om er achter te komen waarom ik de vars niet zie heb ik deze eenvoudige functie gebruikt.
Overigens zit de functie printfwin er in om de debugger naar deze functie te laten gaan. Als ik deze functie weglaat gaat de debugger er niet eens in (ik kan immers debuggen door stapje voor stapje een functie te bekijken). De declaraties ed worden gewoon overgeslagen en als er niks anders in een functie zit wordt de hele functie overgeslagen door de debugger.

Ik heb er helaas wel last van dat ik de variabele niet zie. Ik kan niet debuggen. Nou is dat voor deze functie geen probleem :) maar voor de wat serieuzere functies wel.

groetjes, Anjo
 
Ik test je functie zo:

[cpp]/****************************************************************************/
void testfunctie (void)
/****************************************************************************/
{
int i = 0;
int j = 1;
int k;
k=i+j;
cin.get(); //Vervang vage functie door een cin.get();
}

int main(){
testfunctie();
}[/cpp]

Ik zet dan een breakpoint op de cin,get(); Wanneer de debugger vervolgens stopt op het breakpoint, en ik hover met de muis erover, geeft de debugger netjes de waarde aan. Misschien heb je een re-install nodig?
 
Ik test je functie zo:

[cpp]/****************************************************************************/
void testfunctie (void)
/****************************************************************************/
{
int i = 0;
int j = 1;
int k;
k=i+j;
cin.get(); //Vervang vage functie door een cin.get();
}

int main(){
testfunctie();
}[/cpp]

Ik zet dan een breakpoint op de cin,get(); Wanneer de debugger vervolgens stopt op het breakpoint, en ik hover met de muis erover, geeft de debugger netjes de waarde aan. Misschien heb je een re-install nodig?

Hoi Niek

Ik kan de functie printfwin vervangen door een andere maar daar ligt het niet aan. Ook dan heb ik het probleem. oevallig is het deze (een hele eenvoudige hoor: print de meegegeven waarde op een win scherm ipv dosbox).
Restart heb ik al geprobeerd, zelfs een andere computer.
Het programma geeft wel de goede waarden (ik kan ze naar een file wegschrijven en dat gaat goed) maar ik kan op de een of andere manier geen nieuwe vars meer debuggen.
Ik begrijp er niks meer van...

groetjes, Anjo
 
Heel apart... Vooral omdat het dus op meerdere computers niet werkt. Ik gebruik zelf nog steeds 2005, dus misschien dat het een bug is in 2008? Weet je zeker dat je de breakpoint op het goede punt gezet hebt?
Ik testte het zo:

- voorgaand programma
- rechtermuis op cin.get() ---> Add breakpoint
- druk op F5
 
Heel apart... Vooral omdat het dus op meerdere computers niet werkt. Ik gebruik zelf nog steeds 2005, dus misschien dat het een bug is in 2008? Weet je zeker dat je de breakpoint op het goede punt gezet hebt?
Ik testte het zo:

- voorgaand programma
- rechtermuis op cin.get() ---> Add breakpoint
- druk op F5

Het zou een bug kunnen zijn, maar tot voor kort werkte het prima. En ik werk aan hetzelfde programma op twee computers.

Het breakpoint stond goed (ik heb veel geprobeerd...).
Het vreemde is dat de debugger zelfs de functie "testfunctie" gewoon overslaat als er alleen maar variabelen declaraties en die som in staan. (De debugger geeft immers normaal gesproken ook als je boven functies gaat "hangen" met je muis al info. Maar de functie wordt zelfs helemaal overgeslagen.)

Het is echt een basisfunctie maar zoals al gezegd doet ie hetzelfde bij alle nieuwe variabelen. Daarom denk ik zelf dat het iets is bij de instellingen van dit poject/solution die ik per ongeluk gewijzigd heb.

Ik zal eens een nieuw project maken met gebruikmaking van alleen de c, rc en h files... misschiet dat dat scheelt?

groetjes, Anjo
 
Zet er eens voor de gein een cout << k; bij in. Het kan zijn dat de code-optimizer door heeft dat je variabelen niet belangrijk zijn omdat ze niet gebruikt worden en er zodoende door de compiler uit-geoptimized worden.
 
Zet er eens voor de gein een cout << k; bij in. Het kan zijn dat de code-optimizer door heeft dat je variabelen niet belangrijk zijn omdat ze niet gebruikt worden en er zodoende door de compiler uit-geoptimized worden.

Dag Niek

Ik gebruik alleen c, geen c++ dus ik weet niet of dat zomaar zal werken (kan er nu even niet bij om te testen); daar zullen misschien nog andere dingen voor nodig zijn (includes ed?).

Overigens "ziet" de debugger de variabelen wel als ik ze niet lokaal maar globaal declareer...
Ik kan er helaas de komende paar dagen niet aan werken maar kom er zeker op terug. Ik wil het erg graag oplossen

groetjes, Anjo
 
In dat geval vervang cout door printf("%d",k);

Dag Niek

Inmiddels weer begonnen...

Ik had ook al geprobeerd om de waarden van de niet te debuggen vars naar file te schrijven en dat ging goed. Het programma kent ze wel maar ik kan ze alleen niet debuggen.

Ik heb inmiddels een nieuw project aangemaakt met alleen maar de source codes (dus geen oude instellingen worden gebruikt) en een eerste voorzichtige poging lijkt nu wel te slagen.
Ik heb het nog niet allemaal uitgetest en ik weet ook nog niet hoe het op de andere machine zal gaan maar in eerste instantie lijkt dit goed te gaan.

Geen flauw idee wat het probleem was maar vooralsnog ziet het er naar uit dat ik verder kan.

met dank voor het meedenken,

groetjes, Anjo
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan