Dyrektywa preprocesora #error

0

Witam, mam taki mały program:

 
#include <iostream>
#define LICZBA 2


using namespace std;

int main()
{
	#if (LICZBA==2)
#else
	#error "cos tam"
	#endif

	cout << "!!!Hello World!!" << endl; // prints !!!Hello World!!!

	return 0;
}

Przy dyrektywie #error eclipse zgłasza mi błąd:
#error encountered with text "cos tam"

Co tutaj jest źle. Uczę się z książki pana Grębosza.

0
Pazura napisał(a):

Co tutaj jest źle.

Ano LICZBA to 1, a nie 2

1

jezeli sie uczysz c++ to odpusc sobie na poczatek dyrektywy procesora (w tym #error #line etc) bo zapewne przez najblizsze miesiace nigdy Ci sie to nie przyda. Jedynie co Ci sie przyda to #pragma once w visual studio (ale chyba juz wiekszosc kompilatorow to obsluguje wiec nie tylko vs)

0

derektywę #error tak jak #warning stosuje się w określonych warunkach (np, jeśli piszemy na kilka platform, i dla którejś jeszcze nie zdefiniowaliśmy interface'u, albo mamy coś nieprzetestowane i dla siebie, albo dla innych członków teamu zostawiamy komunikat w kodzie)
#error zatrzyma kompilacje, jeśli wejdzie w ten znacznik. Przykład zastosowania:

 
#ifdef __MORPHOS__

    struct Library* MultimediaBase;
    if (MultimediaBase = OpenLibrary("multimedia/multimedia.class", 52))
   { 

#else

#error "brak odpowiednika - konieczność zaimplementowania"

#endif

Tak więc kod skompiluje się dla systemu Morphos, dla innych systemów konieczne jest stworzenie wrapera wykonującego te same funkcje. Ponieważ ich nie ma, to dopóki nie napisze się takowych kod dla tych platform nie powinien się kompilować, gdyż nie będzie prawidłowo działać.

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