-
[42경산] 3기 1차 라피신 회고 - norminette 문서 핵심 내용 요약Linux Shell 2025. 3. 3. 17:18
42과정의 코드 컨벤션 또는 format 규약인 normiette를 지킬 때,
인지하고 있어야 할 꼭 필요한 내용만 요약해 본다.
1. 명명
- 구조체 이름: s_
- 전역 변수 이름: g_
- 변수/함수명: 소문자, 숫자, '_' (Unix Case)
- 파일/디렉터리: 소문자, 숫자, '_' (Unix Case)
- 들여쓰기는 네 칸 크기의 탭 사용
- 줄 너비는 최대 80열 (주석, 탭 공백 수 포함)
- 함수는 최대 25줄
- for, do ... while, 삼항 연산자 금지
- 상수(const) 및 정적(static)이 아닌 전역 변수 선언은 금지
- 파일은 컴파일이 가능
2. 서식- 들여쓰기는 네 칸 크기의 탭 사용
- 각 함수는 함수 자체의 중괄호를 제외하고 최대 25줄
- 각 함수는 줄 바꿈으로 구분
- 모든 주석과 전체러기 명령은 함수 바로 위에 존재할 것
- 한 줄에 한 명령만이 존재
- 두 개의 연속된 공백이 있을 수 없음
- 모든 중괄호나 제어 구조 뒤에는 줄바꿈으로 시작
- 모든 콤마와 세미콜론 뒤에는 공백 문자가 붙음 (줄끝 제외)
- 각 C 키워드 뒤에는 공백이 있어야 함 (자료형 키워드, sizeof 제외)
- 한 줄에 한 개의 변수 선언만이 가능
- 선언과 초기화는 같은 줄에서 작성될 수 없음
- 선언문은 함수의 처음에 존재
- 변수 선언문과 이후 함수 사이에는 빈 줄이 존재하고, 다른 빈 줄은 함수 내에서에서 불가
- 함수, 선언문, 제어 구조 다음에 오는 중괄호 앞 뒤에는 줄바꿈이 존재3. 함수
- 한 함수에는 최대 4개의 명명된 매개변수 포함
- 각 함수에서 변수 선언은 최대 5개
- 인자를 받지 않는 함수는 "void"라는 단어를 인자로 명시적 프로토타이핑
- 함수의 리턴은 괄호 사이에 있어야 함
- 각 함수의 리턴 자료형과 함수 이름 사이에는 한 번의 탭 들여쓰기4. 자료형, 구제체, 열거형(enum)과 공용체(union)
- 구조체, 열거형, 공용체를 선언 할 때는 탭 들여쓰기
- 구조체, 열거형, 공용체의 변수를 선언할 때에는 자료형 안에 공백 문자 하나 포함
- 구조체, 열거형, 공용체를 typeof와 함께 선언할 때에는 모든 들여쓰기 규칙이 적용
- typeof 이름은 탭이 앞에 있어야만 한다.
- 모든 구조체의 이름은 해당 스코프의 같은 열에 들여쓰기 해야만 한다.
- '.c' 파일 내에서 구조체를 선언할 수 없다.5. 헤더
- 헤더파일에서 허용되는 것들: 헤더 인클루드(시스템 헤더 또는 유저 헤더), 선언문, defines, 프로토타입과 매크로
- 모든 인클루드는 파일의 시작에 작성
- C 파일을 포함할 수 없음
- 헤더 파일은 중복 인클루드를 방지
- 사용하지 않은 헤더의 인클루드는 금지
6. 42 헤더- 모든 `.c` 및 `.h` 파일은 즉시 표준 42 헤더로 시작 (클러스터 컴퓨터에서 vim: Stdheader 또는 F1)
- 42 헤더에는 로그인과 이메일이 포함된 작성자, 생성일, 로그인 및 마지막 업데이트 날짜를 포함한 여러 최신 정보가 포함
7. 매크로와 전처리기- 매크로 상수 (또는 '#define')는 리터럴이나 상숫값에만 사용 가능
- Norm을 우회하거나 코드 가독성을 낮추는 모든 `#define`은 금지
- 여러 줄에 걸친 매크로는 금지
- 매크로 이름은 모두 대문자8. 금지사항
- 금지 구문: for, do...while, switch, case, goto
- 삼항연산자: 'i = argc > 5 ? 0 : 1'
- VLA (가변 길이 배열)
- 자료형을 명시하지 않은 변수 선언9. 주석
- 주석은 함수 내부에서 불가
- 주석은 영어이며 유용해야 함10. 파일
- '.c' 파일을 include 할 수 없음
- 하나의 '.c' 파일에 함수를 5개보다 많이 정의할 수 없음11. makefile
- Makefile은 Norm에서 확인하지 않음 (평가 중에 알아서 확인)
- Makefile이 리링크(relink)되면, 프로젝트는 작동하지 않는 것으로 간주
- 다음 규칙은 필수적임: $(name), clean, fclean, re and all
- 컴파일시 모든 소스파일들은 Makefile에 명시'Linux Shell' 카테고리의 다른 글
[42경산] 3기 1차 라피신 회고 - shell 명령어 (3) (0) 2025.03.10 [42경산] 3기 1차 라피신 회고 - shell 명령어 (2) (0) 2025.03.05 [42경산] 3기 1차 라피신 회고 - shell 명령어 (2) (0) 2025.03.03 [42경산] 3기 1차 라피신 회고 - shell 명령어 (1) (0) 2025.02.17