char *envp [ ]는 main() portable의 세 번째 인수입니까?
환경변수를 가져오려면C
프로그램, 다음을 사용할 수 있습니다.
getenv()
extern char **environ;
그러나 위에서 언급한 것 외에, 는char *envp[]
에 대한 제3의 논거로서main()
환경변수를 표준의 일부로 간주할 수 있습니까?
#include <stdio.h>
int main(int argc, char *argv[], char *envp[])
{
while(*envp)
printf("%s\n",*envp++);
}
이char *envp[]
휴대할 수 있습니까?
함수getenv
C 표준으로 지정되어 있는 것은 이것뿐입니다.함수 및 extern은 POSIX 고유합니다.
편집
그main
파라미터envp
는 POSIX에 의해 지정되어 있지 않지만 광범위하게 지원됩니다.
환경 목록에 액세스하는 다른 방법은 main() 함수에 세 번째 인수를 선언하는 것입니다.
int main(int argc, char *argv[], char *envp[])
이 인수는 환경과 같은 방법으로 취급할 수 있습니다.단, 이 인수의 스코프는 main()에 대해 로컬입니다.이 기능은 UNIX 시스템에 널리 구현되어 있지만 범위 제한과 더불어 SUSv3에 지정되어 있지 않기 때문에 사용을 피해야 합니다.
그것은 휴대할 수 없다. *envp[]
는 기존의 UNIX 방식이며, 모든 최신 UNIX 시스템에서 구현되는 것은 아닙니다.
또, 사이드 노트로서 envp 에 액세스 할 수 있습니다.*argv[]
넘치고...하지만 안전한 프로그래밍이라고 볼 수는 없을 것 같아요프로세스 메모리 맵을 보면envp[]
바로 위에 있다argv[]
.
이 기준서는 다음의 두 가지 형식을 기술한다.main
(C99 Standard(pdf)의 5.1.2.1 참조)
a)int main(void)
그리고.
b)int main(int argc, char **argv)
또는 동등한 것
또, 실장에서는 다른 포맷을 정의할 수 있습니다(3번째 인수를 사용할 수 있습니다).
c) 또는 기타 구현 정의 방법.
세 번째 인수는 Microsoft C 및 GNU GCC에서 유효합니다.
언급URL : https://stackoverflow.com/questions/10321435/is-char-envp-as-a-third-argument-to-main-portable
'programing' 카테고리의 다른 글
C용 XML 파서 (0) | 2022.08.21 |
---|---|
어떻게 현재 화면 방향 갈 수 있나요? (0) | 2022.08.21 |
Larabel의 VUE2 구성 요소 레지스터 (0) | 2022.08.21 |
Vue 2 - 소품 배열 기본 유형 설정 방법 (0) | 2022.08.21 |
이 글을 쓰는 것을 피하는 방법.$store.state.donkey는 Vue에서 항상? (0) | 2022.08.21 |