kategoria: ANSI C
[#1] #include :(
Używam obecnie gcc w wersji 2.04 (piszę z głowy, na pewno wersja 2 ileś). W programie, który chcę napisać chcę użyć includa , ale po wpisaniu w/w includa i zdefiniowaniu zmiennej string program się kompiluje bez problemowo, ale po uruchomieniu program zwraca informację, ze program nie jest uruchamialny. Jakieś pomysły na usunięce problemu? W wcześniejszej wersji gcc jakiej używałem nie było w/w problemu. Składnia string jest poprawna, bo źródłówka skompilowana na pc działa ok.

[#2] Re: #include :(

@ZED^lM, post #1

a bit protekcji E dla pliku jest wlaczony ?
[#3] Re: #include :(

@Norbert, post #2

Tak jest włączony.
Przykładowy kod:
.
.
#include - jeśli jest tylko ta linia w kodzie program się wykonuje
.
.
string sTekst; - od tego momentu wyskakuje w/w błąd

[#4] Re: #include :(

@ZED^lM, post #3

gcc czy g++ ?

[#5] Re: #include :(

@ZED^lM, post #1

Spróbuj skompilować z optymalizacją np. -O2

[#6] Re: #include :(

@ZED^lM, post #1

Bardzo ciekawe, Czy mógłbyś podać pełny minimalny listing twojego problemu. Czy można go skrócić do czegoś takiego

#include 

int main()
{

 std::string s;

 return 0;
}


Czy powyższy przykład po skompilowaniu się uruchamia bez problemu ?

EDIT: pomijam ewentualne ostrzeżenia kompilatora że zmienna s jest nieużywana.

Pozdrawiam



Ostatnia modyfikacja: 21.12.2009 14:49:48
[#7] Re: #include :(

@Korni, post #5

Dokładnie jest z taką

[#8] Re: #include :(

@rzookol, post #4

Do c++. Na 90% to gcc. Sprawdzę w domu.

[#9] Re: #include :(

@asman, post #6

Jak będę w domu to spróbuję skompilować (na to nie wpadłem). Lecz program wtedy nie daje się uruchomić jak podaję taką komendę. Bez tej komendy działa bez zarzutu.



Ostatnia modyfikacja: 21.12.2009 14:54:13
[#10] Re: #include :(

@ZED^lM, post #9

Jeszcze jeden tip. To może zabrzmieć dziwnie ale nadaj jakąś unikatową nazwę plikowi wykonywalnemu. Wiem to dziwne. Ale pamiętam sytuację jak kumpel stracił pare godzin na znalezienie błędu ( którego nie było ) a okazało się że nazwa "test" dla pliku wykonywalnego to był zły pomysł. System operacyjny nie odpalał "test" z katalogu użytkownika tylko skądś tam ( To było na Solarisie jak dobrze pamiętam ).

[#11] Re: #include :(

@ZED^lM, post #9

A może chodzi o to, że nie zwracasz wartości 0 w funkcji main() (w kodzie Asmana właśnie komenda zwracania wartości 0 występuje) i zwracana jest jakaś wartość losowa, którą system interpretuje jako błąd zwrotny programu.

#10 Tak, to też może być przyczyna.



Ostatnia modyfikacja: 21.12.2009 15:07:24
[#12] Re: #include :(

@ZED^lM, post #1

Do kompilacji używam następującej składni:
g++ -s -02 -noixemul -o wynik.exe #?.cpp

Jak sugeruje powyżej linia plik wyjściowy ma nazwę wynik.exe. To wszystko kompiluje się w ramie.

Po skompilowaniu:
#include
int main()
{
std::string s;
return 0;
}

Przy ruchumieiniu programu mam komendę:
- wynik.exe: plik nie jest wykonywalny.

[#13] Re: #include :(

@ZED^lM, post #12

Co ma na celu to #?.cpp? Przecież gcc nie skuma amigowych wzorców nazw?

[#14] Re: #include :(

@Minniat, post #11

A co ma RC to nieuruchamiania sie programu w ogole?

[#15] Re: #include :(

@Grzegorz Kraszewski, post #13

Bo to do wywołania instrukcji kompilownia używam krótkiej komendy gg. Zamiast za każdym razem wpisywać g++ -s -02 -noixemul -o wynik.exe #?.cpp. Proces kompilacji uruchamiam ze skryptu. A #?.cpp jest po to bym nie musiał za każdym razem uważać by plik z kodem był o kreślonej nazwie. Tak wpisuje w nazwie pliku byle jaką nazwę i .cpp uruchamiam kompilator i wszystko gra. To są narazie moje proste programy i nie potrzebuję dodatkowych komend do kompilowania.

[#16] Re: #include :(

@ZED^lM, post #15

02? Powinno być O2.

[#17] Re: #include :(

@Korni, post #16

Korni napisał(a):

> 02? Powinno być O2.
>
>

Faktycznie miałeś rację. Powinno być O2 a nie "zero2". pomysł
Kod na string sTekst; już się "nie wysypuje".
Mam taki kod:

sTekst = sTekst + Dane[0] + Dane[1] + Dane[2] + Dane[3];

Taka składnia na pc się kompiluje na mosie nie działa jakieś sugestie lub pomysł na ominięcie tego. Chodzi mi o to by z zaczytanego pliku można było wczytać dane jako string z 4 znaków i następnie porównać go z innym stringiem. W pliku wczytanym oprócz zmiennych tekstowych są także zmienne binarne.

[#18] Re: #include :(

@ZED^lM, post #17

Taka składnia na pc się kompiluje na mosie nie działa jakieś sugestie lub pomysł na ominięcie tego.

Użyj GCC 4 ze strony Morgotha.

[#19] Re: #include :(

@Grzegorz Kraszewski, post #18

Grzegorz Kraszewski napisał(a):

> Taka składnia na pc się kompiluje na mosie nie działa jakieś
> sugestie lub pomysł na ominięcie tego.

>
> Użyj GCC 4 ze strony Morgotha.


Byłbym wdzięczny za link do Jego strony.

[#20] Re: #include :(

@ZED^lM, post #17

Nie za bardzo rozumiem wyrażenia "nie działa". Ale mniejsza o to.

Jeśli chodzi o twój problem to najłatwiej w c++ wczytać plik do stringa i użyć metody compare.

EDIT: Jak wciąż masz problem to daj znak to rozwinę bardziej.



Ostatnia modyfikacja: 22.12.2009 10:22:41
[#21] Re: #include :(

@ZED^lM, post #19

Byłbym wdzięczny za link do Jego strony.

http://www.tbs-software.com/morgoth/

[#22] Re: #include :(

@AmiChris, post #14

A co ma RC to nieuruchamiania sie programu w ogole?

Tak, pomyliłem się. Problem, który przedstawił ZED^IM ma pewne cechy wspólne z problemem przedstawionym wcześniej na forum, a mianowicie tutaj:

http://www.ppa.pl/forum_ppa/read.php?f=1&i=66066&t=66059

Ta osoba też miała problemy z plikami wykonywalnymi, które system traktował jako nie-wykonywalne (co prawda tu chodziło o backup plików, ale cechy wspólne są). Tamten problem został rozwiązany.

[#23] Re: #include :(

@ZED^lM, post #1

Swój problem rozwiązałem tak:

.
char cTekst1[] = {pc_Dane[0], pc_Dane[1], pc_Dane[2], pc_Dane[3], 0};
string s1;
s1 = cTekst1;
.

Także taka składnia pozwala na dokonanie operacji, które są mi potrzebne.

[#24] Re: #include :(

@ZED^lM, post #23

Witam,

A nie lepiej jest użyć czegoś takiego:
const size_t nSize = 4;
string s1( pc_Dane, nSize );


Pozdrawiam

Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem