Mam trudności z kompilacją napisanego przeze mnie programu C ++.
Ten program jest bardzo prosty i, zgodnie z moją najlepszą wiedzą, jest zgodny ze wszystkimi zasadami określonymi w standardzie C ++. Dla pewności przeczytałem w całości ISO / IEC 14882: 2003.
Program jest następujący:
Oto dane wyjściowe, które otrzymałem podczas próby skompilowania tego programu za pomocą Visual C ++ 2010:
c:\dev>cl /nologo helloworld.png
cl : Command line warning D9024 : unrecognized source file type 'helloworld.png', object file assumed
helloworld.png : fatal error LNK1107: invalid or corrupt file: cannot read at 0x5172
Zawstydzony, wypróbowałem g ++ 4.5.2, ale było to równie nieprzydatne:
c:\dev>g++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
Uznałem, że Clang (wersja 3.0 trunk 127530) musi działać, ponieważ jest tak bardzo chwalony za zgodność ze standardami. Niestety nie dał mi nawet jednego z ładnych, podświetlonych komunikatów o błędach:
c:\dev>clang++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
clang++: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
Szczerze mówiąc, tak naprawdę nie wiem, co oznacza jakikolwiek z tych komunikatów o błędach.
Wiele innych programów w C ++ ma pliki źródłowe z rozszerzeniem .cpp , więc pomyślałem, że może potrzebuję zmienić nazwę mojego pliku. Zmieniłem jego nazwę na helloworld.cpp , ale to nie pomogło. Myślę, że w Clang jest bardzo poważny błąd, ponieważ kiedy próbowałem go użyć do skompilowania programu o zmienionej nazwie, wywrócił się i wydrukował „84 ostrzeżenia i 20 wygenerowanych błędów”. i sprawił, że mój komputer wydał duży dźwięk!
Co zrobiłem tutaj źle? Czy przegapiłem jakąś krytyczną część standardu C ++? A może wszystkie trzy kompilatory są tak po prostu zepsute, że nie mogą skompilować tego prostego programu?
źródło
Pochodzi z Overv @ reddit .
źródło
Wypróbuj w ten sposób:
źródło
Twoje
<
i>
,(
i)
,{
i}
wydają się nie pasować bardzo dobrze; Spróbuj narysować je lepiej.źródło
}
że przyczyną problemu jest twój . Spróbuj skupić się na dopasowaniu tego do{
Możesz wypróbować następujący skrypt Pythona. Pamiętaj, że musisz zainstalować PIL i Pytesser .
Aby z niego skorzystać:
źródło
Zapomniałeś użyć Comic Sans jako czcionki, dlatego się myli.
źródło
Nie widzę nowej linii po tym ostatnim klamrze.
Jak wiecie: „Jeśli plik źródłowy, który nie jest pusty, nie kończy się znakiem nowej linii, ... zachowanie jest niezdefiniowane”.
źródło
Ten program jest prawidłowy - nie mogę znaleźć błędów.
Domyślam się, że masz wirusa na swoim komputerze. Najlepiej byłoby sformatować dysk i ponownie zainstalować system operacyjny.
Poinformuj nas, jak to działa, lub jeśli potrzebujesz pomocy w ponownej instalacji.
Nienawidzę wirusów.
źródło
Odkryłem, że pomaga nie pisać kodu na szybie mojego monitora za pomocą magicznego markera, nawet jeśli wygląda ładnie, gdy jest naprawdę czarny. Ekran zapełnia się zbyt szybko, a następnie ludzie, którzy dają mi czysty monitor, dzwonią do mnie co tydzień.
Kilku moich pracowników (jestem kierownikiem) włamuje się, żeby kupić mi jeden z tych czerwonych komputerów z gałkami. Powiedzieli, że nie będę potrzebować markerów i sam mogę wyczyścić ekran, gdy jest pełny, ale muszę go ostrożnie potrząsać. Podejrzewałem, że jest delikatny.
Dlatego zatrudniam mądrych ludzi.
źródło
File format not recognized
Musisz poprawnie sformatować plik. Oznacza to użycie odpowiednich kolorów i czcionek dla twojego kodu. Zobacz szczegółowe dokumentacje dla każdego kompilatora, ponieważ te kolory różnią się w zależności od kompilatora;)źródło
Zapomniałeś preprocesora. Spróbuj tego:
źródło
Czy napisałeś program ręcznie, a następnie zeskanowałeś go do komputera? To właśnie sugeruje „helloworld.png”. W takim przypadku należy pamiętać, że standard C ++ (nawet w jego najnowszym wydaniu) nie wymaga obecności optycznego rozpoznawania znaków i niestety nie jest zawarty jako opcjonalna funkcja w żadnym obecnym kompilatorze.
Możesz rozważyć przeniesienie grafiki do formatu tekstowego. Można użyć dowolnego edytora zwykłego tekstu; użycie edytora tekstu, mimo że jest w stanie wygenerować ładny wydruk, najprawdopodobniej spowoduje taki sam błąd, jak podczas próby skanowania.
Jeśli jesteś naprawdę żądny przygód, możesz spróbować napisać kod w edytorze tekstu. Wydrukuj go, najlepiej używając czcionki takiej jak OCR-A . Następnie weź wydruk i zeskanuj go ponownie. Skanowanie można następnie uruchomić za pomocą pakietu OCR innej firmy w celu wygenerowania formularza tekstowego. Formularz tekstowy można następnie skompilować przy użyciu jednego z wielu standardowych kompilatorów.
Uważaj jednak na wielki koszt papieru, który poniesie on w fazie debugowania.
źródło
Narysuj dołączenie poniżej, aby skompilować:
Słyszałem, że potrafi skompilować błędy składniowe ...
źródło
#include <JonSkeet>
.Niestety wybrałeś trzy kompilatory, które obsługują wiele języków, nie tylko C ++. Wszyscy muszą zgadnąć, jakiego języka programowania użyłeś. Jak zapewne już wiesz, format PNG jest odpowiedni dla wszystkich języków programowania, nie tylko C ++.
Zwykle kompilator może sam zrozumieć język. Na przykład, jeśli PNG jest oczywiście rysowany kredkami, kompilator będzie wiedział, że zawiera Visual Basic. Jeśli wygląda na to, że jest narysowany ołówkiem mechanicznym, łatwo jest rozpoznać inżyniera w pracy, pisząc kod FORTRAN.
W tym przypadku drugi krok nie pomaga kompilatorowi. C i C ++ po prostu wyglądają zbyt podobnie, aż do
#include
. Dlatego musisz pomóc kompilatorowi w wyborze języka. Teraz możesz użyć niestandardowych środków. Na przykład kompilator Visual Studio akceptuje argumenty wiersza polecenia / TC i / TP lub można użyć opcji „Kompiluj jako: C ++” w pliku projektu. GCC i CLang mają własne mechanizmy, których nie znam.Dlatego zaleciłbym użycie standardowej metody zamiast poinformowania kompilatora, że poniższy kod jest w C ++. Jak już odkryłeś, kompilatory C ++ są bardzo wybredne w kwestii tego, co akceptują. Dlatego standardowym sposobem identyfikacji C ++ jest dodawanie przez programistów zastraszających ich kodu C ++. Na przykład poniższy wiersz wyjaśni Twojemu kompilatorowi, że to, co następuje, to C ++ (i lepiej skompiluje go bez skarg).
źródło
#pragma
to właściwy sposób, aby „dostać wiadomość” do kompilatora?Spróbuj tego:
źródło
endl
(L), a nieend1
(jedna). Ale +1 ładnie zrobione!Czy Twój kompilator jest ustawiony w trybie eksperta ?! Jeśli tak, to nie powinno się kompilować. Nowoczesne kompilatory są zmęczone „Hello World!”
źródło
OCR mówi:
Co jest cholernie dobre, żeby być uczciwym.
źródło
Oczywiście należy sformatować dysk twardy.
Naprawdę te błędy nie są trudne do odczytania.
źródło
Przekształciłem twój program z PNG na ASCII, ale nie kompiluje się jeszcze. Dla twojej informacji próbowałem z szerokością linii 100 i 250 znaków, ale oba dają porównywalne wyniki.
źródło
Pierwszy problem polega na tym, że próbujesz zwrócić niepoprawną wartość na końcu funkcji głównej. Standard C ++ nakazuje, aby typ zwracany przez main () to int, ale zamiast tego próbujesz zwrócić pusty zestaw.
Innym problemem jest - przynajmniej w przypadku g ++ - kompilator dedukuje język używany na podstawie sufiksu pliku. Od g ++ (1):
Naprawienie ich powinno dać ci w pełni działającą aplikację Hello World, co można zobaczyć tutaj .
źródło
Twoja czcionka jest do bani, jak parser powinien być w stanie to odczytać? Weź udział w kursie kaligrafii.
źródło
Twoje kompilatory oczekują ASCII , ale ten program jest oczywiście napisany przy użyciu EBCDIC .
źródło
Próbujesz skompilować obraz.
Wpisz to, co odręcznie zapisałeś w dokumencie o nazwie main.cpp, uruchom ten plik za pomocą kompilatora, a następnie uruchom plik wyjściowy.
źródło
Musisz określić precyzję wyjścia poprzedzoną dwukropkiem bezpośrednio przed końcowym nawiasem zamykającym . Ponieważ dane wyjściowe nie są numeryczne, dokładność wynosi zero, więc potrzebujesz tego -
: 0}
źródło
Dodaj :
zaraz po nim: P: D
źródło
std
cały czas. Przypomina mi, żebym go nie dostał.Wydaje się, że twój kompilator nie obsługuje plików w takim kodowaniu hmm ... Spróbuj przekonwertować go na ASCII.
źródło
Problem leży w definicji składni, spróbuj użyć linijki i kompasów, aby uzyskać bardziej klasyczny opis!
Twoje zdrowie,
źródło
Spróbuj zmienić interfejs wejściowy. C ++ oczekuje, że klawiatura zostanie podłączona do komputera, a nie skanera. Mogą występować tutaj problemy z konfliktem urządzeń peryferyjnych. Nie sprawdziłem w standardzie ISO, czy interfejs klawiatury jest obowiązkowy, ale dotyczy to wszystkich kompilatorów, których kiedykolwiek używałem. Ale może wejście skanera jest teraz dostępne w C99, w takim przypadku twój program rzeczywiście powinien działać. Jeśli nie, będziesz musiał poczekać na kolejną standardową wersję i aktualizację kompilatorów.
źródło
Możesz wypróbować różne kolory nawiasów, może pomoże Ci zielony lub czerwony? Myślę, że twój kompilator nie może rozpoznać czarnego tuszu: P
źródło
Czy jestem jedynym, który nie rozpoznaje znaku między „return” a średnikiem? To może być to!
źródło