2012-07-30 6 views
5

Czy istnieje opcja pominąć typ zmiennej lub ustawić typ zmiennej doint kodu w C++, które mają być zestawiane z kompilatora g ++ w Linuksie.Każda opcja w C++, aby ustawić domyślny typ zmiennej int

const bufLen = 2000; 

Kompilacja poszła dobrze w solaris (tak jak robię portowanie z Solaris do Linuxa).

Jeszcze jedno, nie mam kontroli nad plikiem gdyż jest generowany za pośrednictwem parsera (dostarczone przez jakiegoś osobę trzecią w formie binarnej)

Ponieważ nie mogę zmienić C++ plik (jak to jest generowany za każdym razem przed kompilacją), muszę trochę opcji (z g ++), więc mogę to podczas kompilacji do stłumienia/rozwiązać błąd:

error: ISO C++ forbids declaration of `bufLen` with no type 

EDIT:

INFO: opcje aktualnie używam -c -fPIC -Wno-deprecated -m32 -O2 -ffriend-injection -g

Czy ktoś z opcji powodując mnie kłopoty (lub wpływu innych)?


góry dzięki

+1

Czy jesteś pewien, że jest to plik C++ (a nie C)? C89 pozwoliło na pominięcie 'int'. – avakar

+2

Czy możesz po prostu skompilować go jako kod C? Innymi słowy, używaj kompilatora C, a nie kompilatora C++. – sashang

+0

@sashang: Jest to plik C++, nie c. Właśnie wspomniałem o jednym wierszu, który sprawia mi kłopot z wygenerowanego przez 10000 generatora parsera pliku C++. – Makesh

Odpowiedz

2

Dzięki AndersK który dał mi rozwiązanie (poprzez komentarze [poniżej moje pytanie])

Próbowałem kompilacji używając -fms-extensions z g ++, który rozwiązany mój problem

referencyjny: http://gcc.gnu.org/onlinedocs/gcc-3.4.4/gcc/C-Dialect-Options.html

PS: Ze względu na widoczność dodałem odpowiedź w sekcji odpowiedzi. Kredyty trafiają do osoby, która odpowiedziała:

+0

Czy zdajesz sobie sprawę z ironii używania rozszerzeń -fms-extensions w celu skompilowania kodu? -fms-extensions zostało dodane do gcc, aby umożliwić obsługę specyficznych dla Microsoft rozszerzeń tego języka (http://gcc.gnu.org/ml/gcc-patches/1999-08n/msg00363.html). Poważnie wątpię, że oryginalny kod, który przesyłasz z Solaris do Linuxa ma w sobie coś związanego z Microsoftem. Domyślam się, że prawdziwym problemem jest generator kodu generujący kod C, a twoim problemem jest kompilacja kodu C za pomocą kompilatora C++. Po prostu zmień opcje kompilatora, aby gcc użył kompilatora C, jak zauważyli inni. – sashang

1
+0

To nie zadziała, jeśli plik rzeczywiście zawiera C++ (w przeciwieństwie do czystego C) kodu. –

+0

W takim przypadku nie jest to kod como iso com ++ zgodnie z komunikatem o błędzie – Paranaix

+0

@Paranaix: tak właśnie kompiluję:/usr/bin/g ++ xyz.cc -c -fPIC -Wno-przestarzały -m32 -O2 -ffriend -injection -g -I/some_inc_dirs -o xyz.o ... Czy to pomoże? – Makesh

Powiązane problemy