Wątek przeniesiony 2018-06-14 15:49 z Delphi i Pascal przez kq.

Coś do grupowania funkcji w C i C++.

0

Witam

Czy jest coś takiego dostępne ? Np jak moduły w ruby. Przykładowo ze pisze moduł "math", definiuje w nim funkcje a później używam "math.square ; math.multiple" itp ? Chodzi mi zarówno o C jak i o C++.

0

C++ ma klasy i przestrzenie nazw. C - nie.

0

Może jednak ktoś zna jakas opcje w C żeby cos chociaż jakąś namiastkę tego przypominało ?

2

Możesz robić to co wszystkie biblioteki i dodawać odpowiedni prefix. Np. funkcje Open MP mają nazwy zaczynające się od omp_.

0

Czyli ze co miałbym zrobić ?

2

Nazwać wszystkie funkcje z jednego pliku w taki sposób, aby zawierały taki sam prefiks, np. mth_square, mth_multiple itd. Coś taki niekumaty?

0

Chodzi o to żebym napisal swoją bibliotekę zawierająca funkcję z takimi samymi prefiksami ?

2

meme.jpg

0

Tu masz przykład API C dostarczonego przez Apple:
https://developer.apple.com/documentation/corefoundation/cfstream?changes=_8&language=objc
Nazwy funkcji C w tym wypadku mają taki format:

<DwuLiterowyPrefixBiblioteki><NazwaStruktury/kalsy><NazwaWłaściwaFunkcji>

IMO to jest dobra praktyka.

0

Ewentualnie możesz sobie stworzyć obiekt, który będzie miał przypisane wskaźniki na funkcje. Trochę mniej wygodne w użyciu, ale może czasami być tez przydatne.

0

Nie, nie chodziło mi o pisanie swojej biblioteki, bo to wiadomo ze można zrobić. Szukam bardziej możliwości języka które coś takiego pozwoliłyby mi zrobić ale chyba w C jednak czegoś takiego nie znajdę... No ale pomijając tworzenie bibliotek to jakie działanie w języku C byłoby najbliższe takiemu efektowi ?

0

Funkcje w C grupuje się w pliki nagłówkowe. Ponieważ nie ma klas czy przestrzeni nazw, żeby unikać kolizji (sytuacji kiedy są dwie różne funkcje z różnych bibliotek o tych samych nazwach) oraz niejasności (z jakiej biblioteki jest funkcja open?) dobrym nawykiem jest odpowiednie nazywanie tych funkcji, ale o tym już ci kilkakrotnie powiedziano.

0

No ok, dziękuję za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1