Dlaczego podczas kompilacji podkreśla bool jako błąd?

0

Cześć. mam problem, podkreśla mi bool jako błąd (IntelliSense: expected a ';' ) Używam Visual Studio.

To jest oczywiście początek kodu ;) Pomoże ktoś ?

#include "stdafx.h"
#include <stdbool.h> 
#include <stdio.h>

typedef enum { FALSE = 0, TRUE = 1 } bool; // tutaj mi podkreśla błąd//
double sumaszer(double x, double eps, int M, int *licz, bool *dokladnosc);
double Newton(double r, int n);
1

W C nie ma czegoś takiego jak bool.

0

A mogę to jakoś zmienić ?

2

Wywal

#include <stdbool.h>

Albo jak chcesz korzystać z bool zdefiniowanego tam, to nie definiuj własnego enuma.

2

W C99 i wyżej jest _Bool, który w stdbool.h definiuje bool, true (_True) i false (_False).

Nie wiem czy VC implementuje tą część standardu C99, ale jeśli tak, to Twoja definicja bool koliduje z tą z stdbool.h. Oczywiście tego, co mówi kompilator nie wiemy, więc musimy się domyślać :/

0

jak wywale

 #include <stdbool.h>

to też mi podkreśla bląd :(

IntelliSense: expected a ';' IntelliSense: this declaration has no storage class or type specifier

dodanie treści błędu - @furious programming

1

A czy to nie jest przypadkiem redefinicja symbolu?
Definiujesz enuma pod nazwą, która jest zaproszeniem do konfliktów! Nieważne C czy C++ nie powinno się definiować symboli o nazwach, które mogą prowadzić do takich konfliktów. Co będzie jeśli postanowisz dołączyć kod w C do kodu C++?

3

Nie wymyślaj koła na nowo. Wywal tego enuma, dołącz <stdbool.h>, używaj bool z wartościami true i false.

Jeśli nadal będzie jakiś błąd to dołącz kod, treść błędu oraz wskaż linię kodu, której ten błąd dotyczy.

0

Czyli w ogóle wywalić tę linijkę tak ?

 typedef enum { FALSE = 0, TRUE = 1 } bool;
0

Dziękuję Wam bardzo za pomoc :) Teraz wszystko działa :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.