Piszę program który ma wykonywać działanie Sita Euklidesa mam jednak jeden problem. W domu piszę w Dev C++ i nie ma problemu - program się uruchamia i działa poprawnie. Jednak na zajęciach działamy na VS 2008 więc przeniosłem i wyskakują błędy:
#include "stdafx.h"
#include "iostream"
using namespace std;
int pocz;
int kon;
int main()
{
cout << "Podaj dolny zakres poszukiwania liczb pierwszych \n";
cin >> pocz;
cout << "Podaj gorny zakres poszukiwania liczb pierwszych \n";
cin >> kon;
bool TablicaLiczb[kon + 1]; // w tym miejscu wskazuje na te błędy
Bo definiowanie tablicy o dynamicznym rozmiarze tak samo jak tej o stałym rozmiarze jest nielegalne w C++ - G++ ma to jako rozszerzenie, VC++ - nie. Użyj new[] + delete[] i będzie dobrze.
Tutaj nawet nie o dynamiczny rozmiar chodzi. Zmienna kon nie ma zadeklarowanej wartości, więc dodanie do niej jedynki niespecjalnie mówi kompilatorowi o jaką wartość chodzi. Brak const jest tylko wisienką na torcie.
@ Ryan : Tak, tylko, że GCC potrafi to wykryć i automagicznie zmieni to na tablicę dynamiczną(tym bardziej, że widzi, że zmienna “kon” może być gdzieś zmieniana) - nie potrzebuje do tego ani początkowej wartości ani nawet _const_a.