Mam kilka funkcji, które uzyskują dostęp do różnych argumentów programu za pośrednictwem tablicy argv[]
. W tej chwili funkcje te są zagnieżdżane wewnątrz funkcji main()
z powodu rozszerzenia języka, które zapewnia kompilator umożliwiający takie struktury.Jak uzyskać dostęp do argv [] spoza funkcji main()?
Chciałbym pozbyć się zagnieżdżonych funkcji, tak aby możliwa była interoperacyjność bez uzależnienia od rozszerzenia języka.
Przede wszystkim pomyślałem o wskaźniku tablicy, który wskazywałbym na argv[]
po uruchomieniu programu, zmienna ta byłaby poza funkcją main()
i zadeklarowana przed funkcjami, aby mogła być przez nich używana.
Więc zadeklarował takiego wskaźnika w następujący sposób:
char *(*name)[];
który powinien być wskaźnikiem do tablicy wskaźników do znaków. Jednak, gdy staram się skierować go do argv[]
otrzymuję ostrzeżenie na cesji z niekompatybilnego typu wskaźnika:
name = &argv;
Co może być problemem? Czy myślisz o innym sposobie dostępu do tablicy argv[]
spoza funkcji main()
?
+1 za to, że pierwsza odpowiedź * i * tylko odpowiedź do tej pory wyjaśniając błąd. –
Dziękuję za wyjaśnienie! Używałem 'argv' jako' char * argv [] ', więc pomyślałem o wskaźniku tablicy na początku. – Sergi
@Johannes, @Sergi: Dzięki, chciałbym, aby książki w C/C++ kładły większy nacisk na różnice w tablicach i wskaźnikach. Te stają się zbyt często mieszane ... –