에릭
76
2020-01-14 22:45:25
7
217

c언어 \쓰는법


c언어 자료구조 책을 사서 공부중인데

처음에

#define MALLOC(p,s) \

  if (! ((p) = malloc(s))) { \

    fprintf(stderr, "Insufficient memory"); \

    exit (EXIT_FAILURE);\

  }

이런 코드가 나왔는데

각 행마다 \이걸 왜붙이는지 모르겠습니다

작성해서 컴파일해보니 문제는 없는데 왜 \를 붙이는건가요?

\이거는 이스케이프 시퀀스나 주석에서밖에 못봤는데

그 외의 용도도 있나요?

0
0
  • 답변 7

  • kenu
    47k
    2020-01-14 23:10:42

    안 써도 될 겁니다.

    타이핑 하는 곳이 도스창인가요?

    까만색 창

    프롬프트 뜨는 창

    프롬프트가 있다면 \(역슬래시)는 이어짐이라는 뜻입니다. "줄은 바꾸지만 문장(statement) 끝난 거 아닙니다." 라는 의미죠.
    CR LF
    줄 바꾸는 이유는 40자를 넘어가면 인간의 눈동자 움직임이 커져서 피로감이 극대화 됩니다. 그래서 1번 컬럼으로 이동해야죠. CR: Carriage Return 여기서 Carriage는 Cursor입니다. 그리고 타자기처럼 한 줄 올려서 다시 타이핑해야 되서 줄 올림(Line Feed) 

    여기에 너무 충실한 게 Windows라고 생각합니다.


    0
  • kenu
    47k
    2020-01-14 23:11:25

    bash shell 프로그래밍 공부하시면 \ 는 다반사입니다.


    0
  • soyeomul
    29
    2020-01-14 23:13:23

    씨언어 말고도 파이썬 코드에서도 적용되더이다

    코드의 한줄이 너무 길어질때 저 기호를 써면 다음줄과 이어주더라구요 


    raw_string = """\

    아름다운\

    우리나라"""


    위에건 다음과 같습니다.


    raw_string = """아름다운우리나라"""

    1
  • soyeomul
    29
    2020-01-14 23:14:22

    아 위에 케누께서 먼저 답글 다셧네여 감사합니다^^^

    0
  • MKRO
    69
    2020-01-14 23:18:50 작성 2020-01-14 23:20:28 수정됨

    매크로 정의할때는 줄바꿈 할때 써야되는 거로 알고 있습니다

     전처리기가 처리하는 라인은 ;로 줄 구분이 안되서 #define 라인을 읽을때 줄바꿈 이스케이프를 안해주면 그 다음라인에서 컴파일 에러나지 않나요?

    0
  • mirheeoj
    9k
    2020-01-14 23:25:24

    #define 전처리 구문은 기본이 한줄이라서 여러줄로 확장하려면 저걸 써야 됩니다

    빼고 빌드해보면 바로 알 수 있죠. 

    0
  • youngyoung
    1k
    2020-01-15 09:49:51

    https://stackoverflow.com/questions/14570297/what-does-it-mean-to-have-a-block-of-c-code-with-a-backslash-after-each-semico

    가끔 제가 답변을 저렇게 링크만 딸랑 놓아서 불편해 하시는 분들있어서 적으면..

    검색해보라는 의미 입니다.

    영문이 거부감은 들겠지만 개발자는 검색못하면 개발자 생활 끝난거라 생각합니다. 


    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.