Там какой-либо путь состоит в том, чтобы получить доступ к параметрам командной строки, не используя аргумент основному? Я должен получить доступ к нему в другой функции, и я предпочел бы не передавать его в.
Мне нужно решение, которое только обязательно работает над Mac OS и Linux с GCC.
Я не думаю, что вы должны это делать, так как среда выполнения C подготовит аргументы и передаст их в main через int argc, char **argv
, не пытайтесь манипулировать поведением, взламывая его, так как это будет в основном непортируемое или, возможно, неопределенное поведение!!! Придерживайтесь правил, и у вас будет переносимость... нет другого способа сделать это, кроме как сломать его...
Вы можете скопировать их в глобальные переменные, если хотите.
Есть ли причина, по которой передача указателя на уже занятое пространство так плохо? Вы не получите никакой реальной экономии, исключив аргумент рассматриваемой функции, и вы можете запустить интересный фейерверк. Обход стека вызовов main () с помощью творческого взлома обычно заканчивается неопределенным поведением или зависимостью от поведения, специфичного для компилятора. Оба они плохи для функциональности и портативности соответственно.
Имейте в виду, что рассматриваемые аргументы - это указатели на аргументы, они будут занимать место независимо от того, что вы делаете. Удобство их индекса столь же дешево, как sizeof (int), я не вижу причин не использовать его.
Похоже, вы оптимизируете довольно агрессивно и преждевременно или застряли с необходимостью добавлять в код функции, с которыми действительно не хотите связываться. В любом случае традиционные действия сэкономят время и сэкономят силы.
Можно. Большинство платформ предоставляют глобальные переменные __argc и __argv. Но опять же, я поддерживаю комментарий zneak.
P.S. Используйте boost::program_options для их разбора. Пожалуйста, не делайте этого по-другому в C++.