본문 바로가기
카테고리 없음

42 Seoul Piscine에서 C 확실하게 제출하는 법

by hyeyoo 2020. 1. 22.
※ 이 블로그의 글은 글쓴이가 공부하면서 정리하여 쓴 글입니다.
※ 최대한 내용을 검토하면서 글을 쓰지만 틀린 내용이 있을 수 있습니다.
※ 만약 틀린 부분이 있다면 댓글로 알려주세요.

오늘 42 Seoul에서 처음 C00을 시도하다가 삽질한 기록을 남겨본다.

 

0. 42 Header란 무엇인가?

42 헤더는 사용자 정보, 생성 및 수정 날짜가 저장되어있는 주석이다. 일부 편집기에 플러그인으로 존재한다.

vscode의 42 header 플러그인:

 

42 Header - Visual Studio Marketplace

OverviewQ & ARating & Review This extension provides the 42 header integration in VS Code. # **************************************************************************** # # # # ::: :::::::: # # vscode-42header :+: :+: :+: # # +:+ +:+ +:+ # # By: kube +#+

marketplace.visualstudio.com

vim도 구글링하면 플러그인이 나온다. 직접 작성하는건...비추

1.  norminette로 코딩 스타일 평가하기

 norminette source_name.c

을 실행해서 별다른 에러가 없으면 통과한다.

그런데 지켜야 할 규칙이 겁나게 많다..

 

여기에 누군가가 에러 메시지를 정리해논 글이 있는데, 도움이 많이 된다. 그런데 러시아어라서 영어로 번역해서 보자.

 

 

Пример правильного оформленя кода C по нормам школы 21

Вот пример правильного оформления кода с комментариями (если будете загонять его на проверку - удалите комментарии) Так же напоминаю, что е...

42-21-school.blogspot.com

이것도 vscode 플러그인이 존재한다. 틀린 부분을 빨갛게 하이라이트 해준다.

 

 

norminette-42 - Visual Studio Marketplace

OverviewQ & ARating & Review Norminette Vscode Simple decorator for vscode user that use norminette command at 42/101 and inject errors of the current opened file in the vscode editor. Setting Default setting is "norminette.command": "norminette", "normine

marketplace.visualstudio.com

 

2.  moulinette가 사용하는 컴파일 옵션

-Wall, -Wextra : 원래는 무시할 경고 사항들을 모두 warning으로 출력한다.

 

정확히 어떤  warning을 활성화 시키는 지는 다음 링크를 참고하자.

https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

 

Using the GNU Compiler Collection (GCC): Warning Options

Check calls to printf and scanf, etc., to make sure that the arguments supplied have types appropriate to the format string specified, and that the conversions specified in the format string make sense. This includes standard functions, and others specifie

gcc.gnu.org

 

-Werror : 모든 warning을 error로 출력한다. 따라서 warning이 하나라도 뜨면 컴파일이 되지 않는다.

나 같은 경우에는 #include <unistd.h>를 하지 않은 채로 write를 호출해서, 컴파일 자체가 되지 않아서 0점을 받았다.

 

3. moulinette가 컴파일하는 방식

매뉴얼에도 나와있지만, "프로그램을 제출하세요"가 아닌 경우에는 함수만 제출해야 한다.

문제에 "함수를 작성하세요" 라고 나온 경우에는 moulinette가 다음처럼 컴파일 한다.

 

gcc -Werror -Wall -Wextra main.c ft_****.c

 

따라서 main.c는 moulinette가 자체적으로 갖고 있으며, 아마도 다음과 같이 작성되어있을 것이다.

 

extern void function_name(void); //function_name을 외부에서 가져온다는 의미

int main(void)

{

    function_name();

}

 

따라서 제대로 테스트를 해보려면 위와 같은 main.c를 만들고 동일한 옵션으로 컴파일을 해보면 된다.

댓글