본문 바로가기
etc

main 함수 없는 C 언어??

by Choraengyi 2016. 12. 22.
728x90

 C언어 코딩할때 main() 함수는 꼭 필요한 함수입니다. 없으면 에러가 나게 됩니다. main 함수가 시작점이고 main으로 부터 다른 함수의 호출이 이루어 지기 때문인데 이러한 main 함수 없이도 프로그램이 돌아갈 수가 있다고 합니다.


해당 URL에서 본 내용을 토대로 작성하였습니다.

https://latesthackingnews.com/2016/10/16/can-write-c-program-without-main-function/


우선 기본적인 출력문부터 시작하겠습니다.


실행환경은 http://www.ideone.com 에서 실행하였습니다.


main 함수안에 출력문을 넣어서 정상 출력되었습니다.



이번에는 함수이름을 test로 바꾸어서 해보았습니다. 역시 오류가 났습니다.



아래 코드를 보면 두줄이 추가되었는데 define 으로 정의 한것입니다. 아래와 같이 추가한 것을 전처리기라고 하는데 컴파일 되기전에 전처리기는 적용이 되기때문에 여기서 test를 main으로 디코드 해주는 전처리기를 생성해주면 main으로 바뀌어 출력됩니다. c##h##o##r 같은 경우 ## 는 토큰병합으로서 쉽게 문자를 합쳐준다고 생각하시면 됩니다.



원본을 가져와서 보겠습니다. 위에 보면 (s,t,u,m,p,e,d) 인데 병합하고자 하는 문자는 msut 순입니다. 해당 토큰 위치를 읽어 4번째, 1번째, 3번째, 2번째를 기억시켜 바로 아래 명령에도 적용시켜서 without은 main으로 바뀌어 정상적으로 돌아가게됩니다. (a,n,i,m,a,t,e)



main 함수를 직접 선언하지 않고 실행시키는 것을 보았는데 어찌 됫던 main 함수는 필요합니다..(결국 컴파일전에는 main으로 인식시킴..) 그냥 보다가 약간 흥미로운 내용이라 한번 써봤습니다..


728x90
반응형

'etc' 카테고리의 다른 글

VSCode Remote-SSH 오류 관련  (5) 2021.02.23
한글 문서 PDF 저장 오류  (0) 2021.01.29

댓글