Visual Studio 2012 problem C2065 i C1189

0

Mam bardzo prosty kodzik do przetestowania (bardziej chodzi mi o poruszanie się w VS tak na prawdę), który na 100% jest poprawny składniowo (nie dość, że jest na tyle prosty, że nie ma gdzie zrobić błędu, to jeszcze napisany przez mojego wykładowcę jako przykład...), ale mimo to VS nie chce mi go skompilować. Podejrzewam, że albo tworzę źle projekt, albo mam jakieś złe ustawienia (przy okazji, kolegom z roku też wyskakują te same błędy...). Jako że jest krótki i prosty, pozwolę sobie go wkleić w całości:

#if   defined(POL) && defined(FRA)
	#error Please define only one country
#elif !(defined(POL) || defined(FRA))
	#error Please define a country

#endif

#ifdef POL

	#define country "Poland"
	#define capital "Warsaw"
#elif defined(FRA)

	#define country "France"

	#define capital "Paris"
#endif

#include <iostream>

using namespace std;

int main() {

	cout << capital << " is the capital of "

		<< country << "." << endl;

}

VS podkreśla mi na czerwono #error, capital i country. Nie wiem czemu, ale przy #error kiedy usuwam '!' z linijki wyżej to jest już wszystko ok - czyli tak jakby VS nie rozumiał negacji... Przy capital i country wydaje się jakby z kolei nie rozumiał #define, napisanego wcześniej, bo wyświetla błąd: "indetifier capital is undefined"...

Projekt tworzę następująco: Plik->nowy->projekt->pusty projekt, potem PPM na Pliki źródłowe->dodaj->nowy element->plik C++. Próbowałem jeszcze Plik->nowy->projekt->Aplikacja konsoli Win32, ale jest to samo...

1

No tak, bo nigdzie nie zdefiniowałeś POL albo FRA.

1

#error Please define a country

Proszę nauczyć się czytać ze zrozumieniem.

0

Ok, rzeczywiście - chciałem, żeby można było sobie samemu to określić podczas kompilacji argumentem -DPOL lub -DFRA, ale nie pomyślałem, że wtedy będzie błąd jak będę chciał sobie to sam skompilować przez VS :). Dzięki wielkie, teraz poszło!!

0

Możesz je ustawić w opcjach projektu. Configuration Properties -> C/C++ -> Preprocessor -> Preprocessor definitions albo Command Line i ręcznie tak jak chciałeś.

1 użytkowników online, w tym zalogowanych: 0, gości: 1