Cześć!
Nie jestem pewny, czy w dobrym wątku ten wpis, ale myślę że jest mocno edukacyjny. Nakreślę szybko kontekst - może się uda ;)
Chodzi o to, że przez "Adminke" Linuxa'mi/Unix'ami sporo zapomniałem, jak używać C :'(. W mocnych "skill'sach" został mi raczej sam Python. Każdy doświadczony Dev wie, że Python jest wysoko-poziomowy i wszystko co w C ma 100 linii, można w Python'ie zmieścić w trzydziestu liniach :p. No ale kurde... nie samym Python'em człowiek żyje ;), w każdym razie, myślę że zrobienie czegoś w C niesie ze sobą więcej wartości edukacyjnych (oczywiście nie chce umniejszać Python'owi, ale jednak ..), niż zrobienie tego samego w wysoko poziomowym języku, szczególnie że zależy mi na dogłębnym poznaniu systemów Linux :)
Mam sporo problemów już na starcie :x, bo postawiłem sobie za cel zrobić prosty program do śledzenia zmian w plikach i zgłaszanie tego do ELK w czystym C. Problem w tym, że wykładam się na takich podstawach jak:
note: expected ‘const char **’ but argument is of type ‘const char *’
Nie rozróżniam, kiedy używać &/* podczas przekazywania argumentu funkcji .. co lepsze, zawsze jak widzę w dokumentacji, że jakaś funkcja wymaga wskaźnika(*) albo bezpośredniego wskazania miejsca w pamięci(&) to gdy przekazuje oczekiwane argumenty, to bardzo często okazuje się, że te argumenty muszą być zupełnie "odwrotne" (skrót myślowy, postaram się jutro pokazać jakieś konkretne przykłady).
Rzecz w tym, że w takich sytuacjach korci mnie, żeby zrobić to w Pythonie, ale no... to pójście na łatwiznę :). To co chciałbym osiągnąć, to napisanie tego w C i ewentualnie połączyć jakąś część wybranej funkcjonalności z Pythonem.
Pytania:
- Jak rozróżniać, kiedy ma być przekazywany odpowiedni argument do funkcji? wg. mnie funkcja która oczekuję wskaźnika(*), powinna otrzymać jej adres(&), wtedy dochodzi do "wyłuskania" jej wartość, pisze o tym S.Prata, ale mogę coś mylić. Dam sobie rękę uciąć, że zdarzyło mi się, że funkcja wołała o wskaźnik, ale po podaniu adresu(&) wywalał się błąd
- Czy znacie jakieś fajne, merytoryczne linki gdzie jest pokazane, jak łączyć Python'a z C? I nie chodzi mi o wywoływanie przy pomocy C, Pythona i na odwrót