Я прочитал, что первый член массива argv всегда будет именем программы.
Это должно быть. C и C ++ требуют, чтобы, если argc
больше нуля, argv[0]
было либо именем программы, либо пустой строкой.
Некоторые системы не обязательно следуют этому соглашению при любых обстоятельствах (например, в Windows вы можете использовать CreateProcess
для создания нового процесса и не передавать имя программы в аргументах командной строки, которые используются для заполнения argc
и argv
).
Полезно ли когда-нибудь держаться за это?
Конечно. Например, если вы хотите создать другой экземпляр себя или напечатать имя вашей программы (например, в инструкциях по использованию).
Люди когда-нибудь снимают с себя первого члена, потому что это бесполезно, или оставляют его там лучшей практикой?
Не меняйте фактические аргументы; следующий человек, который придет, вероятно, будет ожидать, что они будут в их первоначальной форме.