솔직히 int main()
만 쓰다가 코테 준비하면서 채점페이지에 main 함수가 int main(int argc, char * argv[])
가 있는 걸 처음 봤다. 처음엔 궁금했는데 나중에 찾아봐야지 찾아봐야지 하다가 지금까지 왔다. 그리고 오늘 그 죗값을 치뤘다. 이젠.. 잘 알아두자. 모르는 거 있으면 바로바로 찾아보고..
int argc
는 arguments count로 main
함수에 전달된 인자의 갯수를 의미한다.
char * argv[]
는 arguments vector로서 가변적인 갯수의 문자열을 의미한다.
argv[0]
은 실행경로이다. argv[1], argv[2], argv[3]...
은 사용자가 입력한 값이 들어간다.
terminal이나 cmd에서 프로그램 이름으로 명령을 실행시킬 때 사용할 수 있다. 예전엔 다 이렇게 값을 넣어줬다고 한다.. 쓰는 방법은 다음과 같다.
// Project Name : DIC
int main(int argv, char* argc[])
{
std::string temp1(argc[0]);
std::string temp2;
if(argv > 1)
temp2 = std::string(argc[1]);
std::cout << temp1 << " " << temp2 << std::endl;
return 0;
}
빌드하고 나면 Debug폴더가 생성된다. 터미널에서 현재 프로젝트의 Debug폴더로 이동한다.
폴더 내에 있는 파일 목록들을 보면 현재 프로젝트와 이름이 동일한 파일이 있을 것이다.
그 파일을 실행한다.
🏷 주의! 다음과 같은 에러가 날 수도 있다.
error while loading shared libraries: libavformat.so.58: cannot open shared object file: No such file or directory
그럴 땐 LD_LIBRARY_PATH
를 export
를 해준다. 나같은 경우는 다음과 같다.
그리고 다시 실행해준다.
코드 보면 argc[0]
와 argc[1]
만 출력되게 해놓아서 이렇게 출력되었다.