티스토리 뷰

728x90
반응형

Norminette 문법을 맞추는 것은 정말 피곤한 일이다. 왜 오류가 뜨는지도 모르는 경우가 대부분인데 어느 순간 평가를 받고 채점을 받으면서 멍청하게도 Norminette오류를 깜빡해서 빼먹고 채점 받는 일도 있다. 그런만큼 채점을 받을때 형식에 맞춰서 코드를 짠다는게 익숙하지 않은데 피시너 과정을 진행하면서 어느 순간 굉장히 능숙하고 잘 해결해 나가는 본인 모습을 보고 있을 것이다. 또한 Norm이 맞춰져있지 않다면 굉장히 불편하다... 이전에 내가 짠 코드들도 다 수정을 하고 싶다...

 

 

 

 

근데 사실 Norm 오류라는게 어느 한 부분이 잘못됐을 경우에 다른 곳도 오류가 났다고 뜨는 경우도 있는 것 같아서 한번 떴을때 확실하게 틀린 부분을 고치면서 계속 Norminette를 하면서 확인해보는게 좋다. 필자가 처음에 제일 헷갈렸던 부분은 이것이다.

 

int i;	//1
	//2
i = 0; 	//3

 

이 부분에서 2번째 줄에서 공백이 없을거라 생각을 하지만 개행이 돼 있는 상태에서도 tab이나 띄어쓰기가 입력이 돼 있는 경우가 있다. 그래서 처음에 찾는데 고생과 삽질을 많이 한다. 참고하시고 2번째줄의 공백을 지워주시는거 잊지마시길 ... 저 오류는 bad align에도 뜨고 space 오류에도 뜨는 것 같다. 정확히 어떤 오류에서 무엇을 확인해봐야하는지 잘 기억이 나질 않아서, 밑에 다른 분들의 블로그를 참고하여 개인적인 기억과 합쳐서 정리해보았다.

 

 

 

1. Error: 42 header not at top of the file

42 헤더는 사용자 정보, 생성 및 수정 날짜가 저장되어있는 주석이다.

vscode의 42 header 플러그인

42서울 기본 환경에서는 Fn + F1 으로 세팅이 돼 있다.

vim환경에서는 아래와 같이 입력을 해도 입력이 된다.

:Stdheader  //S 대문자

 

42header를 붙였는데도 오류가 나는 경우가 있다. 

그 이유는 필자같은 경우는 헤더에 해당 이메일을 쓰고나서 By: kube <hello@kube.io>  이렇게 정상적으로 표시가 돼야하는데 길이가 길어서 그랬는지 " > " 뒤에 꺽새부분이 생략이 됐었다. 그래서 그제서야 이메일 부분이 짤려서인줄 알고 문자열을 줄여서 처리했었는데, 문자열을 줄이고나니 해결이 됐었다. 

사실 그냥 문자열을 줄여서 써도 상관은 없다. 하지만 신경이 쓰인다면 아래의 헤더로 파일을 바꿔보자.

 

github.com/42Paris/42header

 

42Paris/42header

42 header. Contribute to 42Paris/42header development by creating an account on GitHub.

github.com

 

 

2. global scope bad aligned

함수명을 쓸 때 tab을 안써주면 나온다.

 

함수명들을 찾아가서 띄어쓰기를 없애고 tab을 한번 눌러서 띄어준다.

 

띄어쓰기가 한번 된다면 tab을 두번 해주면 된다.

 

Error: must not begin by spaces / tabulations

공백을 제거한다.

Error: bad indentation

4번의 space와 tab과는 다르다. 모든 공백을 체크해보자..

Error: Space before FUNCTION_NAME

space대신에 tab을 써준다 함수 이름 전에

Error: bad spacing after ft_print_comb

함수가 끝나는 ' } '다음에 적절하지 않은 개행('\n')이 있을 것이다.

Error: function XXXXXXXXX has XX lines

Norm에 한 함수에는 25줄을 넘을 수 없다는 엄청난 조건이 있다. 25줄을 넘어가면 안된다.

 

i++ 를 arr[i++]로 사용하는등 '{' , '}'의 사용을 많이 줄여야한다.

Error: declarations must be followed by one empty line in XXXXXXXXX

변수를 선언할 때

아래와 같이 해야한다.

int i;

int j;

 

i = 0; 

j = 0;

한줄의 개행이 있어야 한다.

Error: missing space around <

(a <=b)  한칸의 띄어쓰기가 있어야한다. (a <= b)

 

declarations in XXXXXXXXX are bad aligned

-Problem in declaring variables in a function. With the help of TABs, align them so that they are located one above the other, in a beautiful column. If there are data types with a long name, then you will have to put several TABs before short ones (of type int).

 

Warning: / Users / XXXXXXXX may not compile or is invalid for some reasons.

-Check the basic C syntax. This can be done as follows: add int main () {} to the end of the program and compile with gcc - and it will indicate errors in the program.

Error: declaration of ft_putchar forbidden in .c

-You run norminette without flags. Use norminette -R CheckForbiddenSourceHeader (Moulinette will use the same flags!)

Error: missing void in function main

-If your function does not accept any arguments, then it must be specified explicitly: int main (void) {}.

Error: multiple empty lines

-Just remove the extra blank lines.

Error: wrong number of spaces in preprocessor indentation

There must be a space before the define: #define

 

 

 

제일 많이 오류가 발생하는 것만 해석해서 적어봤다.

intra에 있는 Norm은 계속 읽으면서 익숙해지는게 좋을듯

 

 

 

 

Reference :

hygoni.com/47

 

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

오늘 42 Seoul에서 처음 C00을 시도하다가 삽질한 기록을 남겨본다. 0. 42 Header란 무엇인가? 42 헤더는 사용자 정보, 생성 및 수정 날짜가 저장되어있는 주석이다. 일부 편집기에 플러그인으로 존재한

hygoni.com

이 글을 작성하면서 가장 많이 도움을 받았다. VSCode에서의 Norminette 환경을 만들고싶을때 참조하면 도움이 많이 될 것이다.

 

 

42-21-school.blogspot.com/2019/07/main.html

 

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

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

42-21-school.blogspot.com

러시아어로 돼 있는데 영어로 해석을 돌려서 확인해보길 바란다.

728x90
반응형
댓글