티스토리 뷰
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> 이렇게 정상적으로 표시가 돼야하는데 길이가 길어서 그랬는지 " > " 뒤에 꺽새부분이 생략이 됐었다. 그래서 그제서야 이메일 부분이 짤려서인줄 알고 문자열을 줄여서 처리했었는데, 문자열을 줄이고나니 해결이 됐었다.
사실 그냥 문자열을 줄여서 써도 상관은 없다. 하지만 신경이 쓰인다면 아래의 헤더로 파일을 바꿔보자.
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 :
이 글을 작성하면서 가장 많이 도움을 받았다. VSCode에서의 Norminette 환경을 만들고싶을때 참조하면 도움이 많이 될 것이다.
42-21-school.blogspot.com/2019/07/main.html
러시아어로 돼 있는데 영어로 해석을 돌려서 확인해보길 바란다.
'TIL(Today I Learn) > 42seoul' 카테고리의 다른 글
[get_next_line] 헤메던 기록 (2021.03.05 업데이트) (4) | 2021.02.21 |
---|---|
42 seoul 라피신 본과정 합격 후기! (22) | 2020.12.18 |
42seoul La Piscine - C언어 환경설정 (4) | 2020.12.13 |
42 Seoul 라피신 후기!! (2) | 2020.12.13 |
- Total
- Today
- Yesterday
- flexbox
- JavaScript
- 프로그래머스 카카오
- React
- css
- JS
- vscode commit vi
- windows 10 ubuntu
- HEXO
- C언어 문제
- c언어 함수
- c언어알고리즘
- 42서울 합격 후기
- 프로그래머스 코테
- C언어
- html
- 마크다운 이미지 업로드
- 42서울 합격
- 42서울
- C언어문제
- 알고리즘
- vscode
- 프로그래머스 코딩테스트
- git vi
- 42seoul
- 프로그래머스 자바
- 백준
- Git
- 자바스크립트
- 42서울 라피신
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |