Moze mnie ktos uswiadomic co mozna programowac w C pod Linuxa? W sensie, jak polaczyc te obie rzeczy, jakie sa mozliwosci? Wiem, ze mozna np. cos z embeded, albo sterowniki programowac. A co jeszcze? Jakie rzeczy mozna robic ktore sa niskopoziomowe, robi sie je w C, na Linuxa, ale jednoczesnie nie trzeba umiec elektroniki?
I czy warto pod takim katem sie ksztalcic pod wzgledem pracy? Tzn. mysle czy wlasnie nie sprobowac takiej
@Carmine:
TL;DR Tak, zabawa jądrami (kernel) + szeroko rozumiane sysopy. W biznesie embedded, jakieś legacy i rzeczy wymagajace megawydajności (z własnego doświadczenia).

To o co pytasz to zakres Sysopów, systemów operacyjnych.

Pisanie modułów do kernela, sterowników, niskopoziomowe zabawy socketami, pipe'ing. Wiele różnych-różniastych narzędzi ( ͡° ͜ʖ ͡°)

Czy teraz został tylko wysoki poziom? Otóż nie. Ale bardzo często bywa tak, że koszt implementacji niskopoziomowych abstrakcji jest wyższy,
  • Odpowiedz
#ansic #c #naukaprogramowania
Mam takie zadanie:

Zakładamy, że dynamiczna rezewacja pamięci (użycie funkcji

malloc) jest niedostępna. Wobec tego zadeklaruj w swoim programie tablicę o rozmiarze

określonym pierwszą liczbą w strumieniu danych wejściowych.


Jak to zrobić bez malloca? :O
#ansic #jezykc #naukaprogramowania
Tworzę strukturę:

typedef struct {
float x,y,z;
char nazwa[DL];
struct PtList *NextList;//wskaznik na nastepna liste;
}PtList;

Jakaś struktura: PtList *wsk=(PtList*)malloc(sizeof (PtList));
Jakaś druga struktura: PtList *wsk2=(PtList*)malloc(sizeof (PtList));

Chciałbym adres drugiej przepisać do:
wsk->NextList.
Jak to powinienem zrobić?
Uczę się C i zastanawiam się jak działa ten kod.

1. Zdaję się że rozumiem jak działa komparator- w przypadku sortowania zwraca informację czy zmienna z danym indeksem ma być przesunięta czy też nie (poprawcie mnie jeżeli się mylę) 

2. Ale mam problem ze zrozumieniem zapisu (int)a - o co w tym chodzi? Dlaczego tutaj jest zadeklarowany wskaźnik dwa razy? I w jaki sposób to działa? 

int cmpfunc (const void * a,
funkcja mapuje pliki do pamięci (mmap) w pętla w pętli dla jakiś tam warunków, teraz chciałbym w przypadku jakiegoś niepowodzenia dodać odmapowanie (munmap) adresów które do tej pory udało się już stworzyć. Lepiej powtórzyć wszystkie pętle i warunki dla mmapa czy lepiej zrobić jakąś strukturę co będzie trzymała adresy i rozmiar i potem sobie przelecę munmapem po wszystkim co udało się zebrać. Pierwsza opcja powiela kod i średnio mi się podoba a
rozwiązałem to tak: w dokumentacji funkcji munmap() jest zapis: "It is not an error if the indicated range does not contain any mapped pages." także w przypadku błędu wykorzystałem to i lecę po wszystkich adresach z puli niezależnie w którym punkcie się wysypało. Także w moim przypadku nie musze zbierać adresów i rozmiarów które udało się mapować, przez co oszczędzam miejsce na prowizoryczny GC, tylko lecę po wszystkich adresach munmapem() nawet po
  • Odpowiedz
Mirki z pod tagu #c #programowanie #kompilacja #ansic chodź bardziej #naukaprogramowania . Potrzebuję wykonać makefile, jednak na początku muszę zmienić dwie linijki w kodzie. Instrukcja mówi tak:

Edit the makefile. Modify the following lines:

(a) CC (your ANSI C compiler)

(b) ROOTDIR (the root directory that was prescribed earlier in the process, e.g.,

rng/)


i fragment makefile:

CC = /usr/bin/gcc
GCCFLAGS = -c -Wall
ROOTDIR = .
SRCDIR = $(ROOTDIR)/src
OBJDIR =
@Massad: make ogarnięty, trzeba wpisywać mingw32-make i śmiga. Teraz mi wypluwa:

No rule to make target 'Users\lenowo\Desktop\testy1/src/assess.c', needed by 'Users\lenowo\Desktop\testy1/obj/assess.o'. Stop.
  • Odpowiedz
@kapelusz: Tablicę jako wskaźnik się da, ale jako wskaźnik i trzeba wtedy ręcznie zarządzać pamięcią, natomiast przedpiszca zaproponował przekazywanie wskaźnika do tablicy w parametrze.
  • Odpowiedz
@ufik78: makra pozwalają Ci na dopasowanie składni języka do potrzeb programisty oraz de facto na programowanie twojego języka programowania.

przykładowo wielki feature Javy 7 to jest "try with resources", czyli coś, co zamyka Ci automatycznie wszystkie pliki zadeklarowane w nawiasach okrągłych w try (...) {...} catch {...} żebyś nie musiał ręcznie tego robić i łapać odpowiednich wyjątków.

huh, Common Lisp chociażby miał to samo dwadzieścia lat wcześniej. ( ͡° ͜
  • Odpowiedz