#define 매크로에 대한 질문입니다

이명수의 이미지

매크로에 대해서
#define height 13
이라고 정의하면 height를 뒤의 13이라는 상수로 사용하겠다는 것은 알고 있는데

#define __user

라고만 정의하면 정확히 어떻게 되는 것인가요?

매크로를 해석하면 단순히 __user를 무의미하게 만들겠다는 의도인가요?

그러면 예를 들어서
foo(void __user *para)
는 매크로 적용시 어떻게 해석이 되나요?
foo(void *para)로 해석이 되나요?

아니면 다르게 해석이 되거나 상황에 따라서 달라지나요?

#define __user

가 어떤 의미 혹은 어떤 의도인지 어떻게 되는 것인지 설명 부탁드립니다

dosuser의 이미지

GCC man페이지에 보시면 전처리 과정 까지만 수행 하는 옵션이 있습니다.

맘대로 코딩 하신 후 전처리 과정의 결과를 보시면 아실수 있지요

프로그래머 다운 프로그래머가 되고 싶습니다. 많은 지도 편달 부탁드립니다^^

프로그래머 다운 프로그래머가 되고 싶습니다. 많은 지도 편달 부탁드립니다^^

hys545의 이미지

즐린

#define __user

라고만 정의하면 정확히 어떻게 되는 것인가요?
-->
#define __user (null)이라고 보면 됩니다.
여기서 null은 그냥 빈 값이고
즉 그냥 __user라는 빈 값을 가진 매크로를 정의한다는 겁니다.

매크로를 해석하면 단순히 __user를 무의미하게 만들겠다는 의도인가요?
-->그건 #undef __user인데여,
아예 무의미하게 만들려면 undef해야 합니다.

그러면 예를 들어서
foo(void __user *para)
는 매크로 적용시 어떻게 해석이 되나요?
foo(void *para)로 해석이 되나요?
-->맞습니다.

즐린

이명수의 이미지

답변 감사드립니다

swirlpotato의 이미지

제가 알고 있는 건
#define AAA
와 같이 선언을 해서 쓰는 이유는
1. #ifdef, #ifndef 와 같이 특정 조건에 사용 하기 위하여
2. 메모를 하기위하여 입니다.

윈도우즈 디바이스 드라이버를 보면 인자에 IN OUT과 같은 매크로가 달려 있습니다.
단지 인자가 인풋을 위한 용도로 쓰일 것이냐 아니면 아웃풋을 위한 용도로 쓰일 것이냐와 같은 것을 개발자에게 알려주거나 이해하기 쉽게 하기 위함입니다.

int aaa(IN int *arg1, OUT int *arg2);
arg1은 함수에 입력을 위한 변수고
arg2는 함수의 출력을 위한 변수라고 생각할 수 있습니다.

이명수의 이미지

네, 맞는 말씀입니다
답변 감사드립니다

haze11의 이미지

#define A B 는 A를 B로 바꾼다고 생각하면 편하실거 같은데요. =.=
B가 없으면 없는데로...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.