Prosty blad C++


(system) #1

Znalazlem ten przyklad w Symfonii odpowiedzi oczywiście nie ma, a ciekawość pozostała. Chodzi o błąd kompilacji:

#include 


int main()

{

        #define DZIESIEC 10;

        const int TRZY = 3;

        double s3 = DZIESIEC / TRZY;


        return 0;

}

w linijce

double s3 = DZIESIEC / TRZY;

syntax error : missing ';' before '/'

Myślałem, że dyrektywa #define działa jak edytor tekstowy i zamienia każde wystąpienie wyrazu na inne przed kompilacją. W tym wypadku kompilator wywala jednak błąd - dlaczego? Jak naprawdę działa ta dyrektywa define?


(Quentin) #2

Bo tak jest.

Bo żadnych dyrektyw preprocesora nie kończymy średnikiem.

Związku z tym taka instrukcja

double s3 = DZIESIEC / TRZY; [/code]

zamieniana jest na:

[code=php]double s3 = 10; / TRZY; 

Czyli pierwszy człon jest dobry, a kompilator nie zgadza się na coś takiego:

/ TRZY; [/code]

bo co to ma oznaczać :slight_smile: :?: