error: name lookup of ‘i’ changed for ISO ‘for’ scoping [-f

Problemy i ich rozwiązania w C++.
gumbicp
Początkujący
Początkujący
Posty: 15
Dołączył(a): środa, 25 stycznia 2012, 08:47

error: name lookup of ‘i’ changed for ISO ‘for’ scoping [-f

Post przez gumbicp »

Na linux używając kompilatora g++ zobaczycie taki błąd w lekcji 7 z liczbami pierwszymi w funkcji test().
Aby to chodziło poprownie kawałek kodu trza tochę zmienić . Nie wiem czemu takie zmiany wprowadzili,
jest to troche upierdliwie :? .

Code: Zaznacz cały

	unsigned int i =2;
	for( ; i <= sqrt(przyslana) ; )
	{
		//cout << "Debug : i ="<< i << " przyslana =" << przyslana <<endl;  
		if(!(przyslna % i))
		{// cout << "Debug : i ="<< i << " przyslana =" << przyslana<<"fasle" <<endl;   
			return false;
		}
		i++;
	}	
Trzeba i zadeklarować wcześniej bo inaczej nie pozwoli wam go użyć w pentli do dzielenia modulo.
A że jest deklarowana wcześniej to for widzę ma tu wredny zwyczaj podnoszenia i++ już przy starcie
więc trza go wyżucić na dół pentli . Obie na linux biblioteki działąją i cmath i math.h .
Z tego co pisali na necie to zmienili trochę standarty ISO w kompilatorze itp ale się w to nie wczytywałem .
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: error: name lookup of ‘i’ changed for ISO ‘for’ scoping

Post przez Morfidon »

A to na pewno kompilujesz jako c++, a nie C? Bo z tego co mi wiadomo taki wymóg jest w języku C, a nie C++.
gumbicp
Początkujący
Początkujący
Posty: 15
Dołączył(a): środa, 25 stycznia 2012, 08:47

Re: error: name lookup of ‘i’ changed for ISO ‘for’ scoping

Post przez gumbicp »

gcc -o program kod.c - tak u mnie c kompiluje
choć moge to zrobic i z g++ przy pliku.c
g++ -o programC -Wconversion liczby_pierwsze.c
i wsumie ten kod skopilowało przy tej komendzie .
...
ale programy z lekcje , kursów c++
g++ -Wall -c "%f"
g++ -Wall -o "%e" "%f"
Najcześciej w programiku Geany
Czasem ręcznie z terminalu g++ -c -Wall -Wconversion hello.cpp a potem g++ -Wall -o wyjscie program.cpp

I teraz szczerze to zgłupiałem w temacie bo nie wiem do konca w jakim języku w Geany niby kompiluje ... :d
Teraz to dokladnie sprawdzam ... i recznie komplikuje z terminala pana kod oprócz funkcji getchar() .. ale ona nie jest mi potrzebna do niczego
A w Geany mam bład i teraz z głupiałem .. hmm
gumbicp
Początkujący
Początkujący
Posty: 15
Dołączył(a): środa, 25 stycznia 2012, 08:47

Re: error: name lookup of ‘i’ changed for ISO ‘for’ scoping

Post przez gumbicp »

Zwracam honor .. to coś u mnie jest pochszanione w komunikacji Geany powłoka shell bo jakimś cudem formatki "%e" i "%f" dla powłoki kompilują na c zamiast c++ . W javie mi to smigało a tu wychodzi babol.
Już w czoraj miałem problem, ale się nie połapałem dopiero ta pana uwaga mi to teraz przypomniała. W lekcjach o plikach na koncu jest ta minibaza.
Problem w tym ze nie ma biblioteki <conio.h> na linuksa .. ale poradziłem sobie z tym kodem inaczej .
Jest za to biblioteka <ncurses> ktorej nie ma w standardzie ale jest w pakietach ncurses-dev dla dystrybucji opartych na ubuntu i dzięki niej napisałem gre
snake na terminal z innego kursu z netu .
Wracajac do tematu .. tam mi przy tej bibliotece wywalało właśnie błędy w Geany .. nie połapałem sie o co chodzi i recznie to kompilowałem (z opcja -lncurses na koncu no i oczywiscie w Geany tez ja dodałem do komend budowania.). I tylko dzięki temu że jak twardziel 8-) w edytorze nano wiekszość programu pisałem to wiedziałem że kompilacja z terminalu idzie.
Teraz to już wiem że to prawie na 100 procent ten problem mi tam wyskoczył .
Post Reply