int main(int argc, char* argv[])

프로그램이 시작되면 가장 처음 실행되는 구문이 main 함수이다. 

 

  • int argc
    main 함수에 파라미터로 전달되는 데이터의 개수이다.
  • char* argv[]
    실제 전달된 데이터의 정보이다. (= argv[0]에는 항상 실행 경로가 들어있다.)

 

아무런 정보도 들어와있지 않다면 argc는 1이다. argc가 1인 이유는 main 함수에 전달되는건 해당 파일의 실제 경로 1개이기 때문이다. 

 

사용하는 이유?

main함수의 파라미터를 사용하는 경우는 여러 경우가 있는데, 보통 외부에서 데이터를 불러올 때 잘 들어왔는지 검사하는 용도로 사용된다. 이를테면 소켓 프로그래밍에서 들어온 소켓에 대한 데이터 정보가 개수에 적합하지 않을 경우 error를 발생시키거나 하는 등 상황에서 사용된다.

 

사용 예

void readFile( char** buffer, int* size, const char* filename );

int main( int argc, char** argv )
{
	const char* filename = "stageData.txt";
	if ( argc >= 2 ){
		filename = argv[ 1 ];
	}
	char* stageData;
	int fileSize;
	readFile( &stageData, &fileSize, filename );
	if ( !stageData ){
		cout << "stage file could not be read." << endl;
		return 1;
}

void readFile( char** buffer, int* size, const char* filename ){
	ifstream in( filename );
	if ( !in ){
		*buffer = 0;
		*size = 0;
	}else{
		in.seekg( 0, ifstream::end );
		*size = static_cast< int >( in.tellg() );
		in.seekg( 0, ifstream::beg );
		*buffer = new char[ *size ];
		in.read( *buffer, *size );
	}
}