아무거나 적당히 운영되는 이상한 블로그

argv 쓰는 간단한 C언어 프로그램을 golang에 우겨넣는 방법 본문

잡담

argv 쓰는 간단한 C언어 프로그램을 golang에 우겨넣는 방법

저세상 음향연구소 2022. 5. 4. 16:43

http://www.cs.cmu.edu/~dst/VCRPlus+/vcrpp1.c

argv를 사용하는 간단한 C언어 프로그램인 G코드 (VHS 비디오테이프 녹화기에서 간단한 번호로 녹화를 설정할 수 있는 기능) 생성기를 간단하게 날먹하는 이야기입니다.

1. cgo 관련 설명은 생략합니다. 잘 소개할 자신이 없습니다.

int
main_c (int argc, char *argv[])
{

2. main 함수를 다른 이름으로 변경합니다. 여기서는 main_c 로 변경했습니다. 그리고 함수 선언 다음 줄에서 인수 선언을 해서 같은 줄에서 선언하도록 수정했습니다. (cgo는 같은 줄에서 선언하지 않으면 argument want가 비어버립니다)

else {
	    // printf ("%d\n", g_newspaper);
		return (g_newspaper);
	}

 

3. printf는 golang으로 전달 할 수 없으니 return을 사용하도록 변경합니다.

argv := make([]*C.char, 8)
argc := C.int(8)
argv[0] = C.CString("vcrpp1.exe")
argv[1] = C.CString("-e")
argv[2] = C.CString("-y 1999")
argv[3] = C.CString("-m 12")
argv[4] = C.CString("-d 31")
argv[5] = C.CString("-c 13")
argv[6] = C.CString("-t 0600")
argv[7] = C.CString("-l 30")
intdata := int(C.main_c(argc, &argv[0]))

4. 대충 이렇게 argv와 argc를 작성해줍니다.

Comments