어떻게 할당한다는건지 모르겠습당..

rokmn3309의 이미지

ide_smart 소스를 분석도중에

__u8 args[4 + 512] = {WIN_SMART, 0, SMART_READ_THRESHOLDS, 1, };
__u8 args[4 + 512] = {WIN_SMART, 0, SMART_READ_VALUES, 1, };

이렇게 할당하는 부분이 존재하는데 어떻게 처리하는건지 궁금합니다.
<linux/hdreg.h> 헤더파일에 보면은..
WIN_SMART sub_commands에 대해서 선언하고 있는데
관련함수들을 설명한 문서라도 구할수 있을까요?..
리플 부탁드립니다.

dotri의 이미지

rokmn3309 wrote:
ide_smart 소스를 분석도중에

__u8 args[4 + 512] = {WIN_SMART, 0, SMART_READ_THRESHOLDS, 1, };
__u8 args[4 + 512] = {WIN_SMART, 0, SMART_READ_VALUES, 1, };

이렇게 할당하는 부분이 존재하는데 어떻게 처리하는건지 궁금합니다.
<linux/hdreg.h> 헤더파일에 보면은..
WIN_SMART sub_commands에 대해서 선언하고 있는데
관련함수들을 설명한 문서라도 구할수 있을까요?..
리플 부탁드립니다.

args[4] 부터 args[515] 까지는 모두 1 로 채워집니다.

rokmn3309의 이미지

__u8 args[4 + 512] = {WIN_SMART, 0, SMART_READ_THRESHOLDS, 1, }; 
__u8 args[4 + 512] = {WIN_SMART, 0, SMART_READ_VALUES, 1, }; 

args[4] 부터 args[515] 까지는 모두 1 로 채워집니다.

sizeof를 해보면은 516인데.. strlen으로 찍어보면은 1로 나옵니다.
그럼 할당된 크기는 516인데 실제 데이터는 1밖에 없다는 이야기인데..
모두 1로 채워진다면 strlen이나 sizeof나 값이 같아야 하지 않을까요??
이런문법은 본적이 없어서리...
[/code]

송지석의 이미지

strlen으로 보면 1이 찍히는 것은 배열에서 두번째 것이 0이기 때문이지요.

__u8 args[4 + 512] = {WIN_SMART, 0, SMART_READ_THRESHOLDS, 1, };
__u8 args[4 + 512] = {WIN_SMART, 0, SMART_READ_VALUES, 1, };

에서
WIN_SMART, 0
으로 되어있으니
args[1]은 0이 들어가고요

1,}로 ,만 찍고 괄호를 닫는 것은 이 다음부터 끝까지 1로 채워라 라는 뜻입니다.

그러니 이것과 같은 의미가 되겠지요 (대신에 메모리 상에 할당되는 위치는 다를 겁니다)

    int i;

    __u8 args[516];

    args[0] = WIN_SMART;
    args[1] = 0;
    args[2] = SMART_READ_THRESHOLDS;
    for(i=3;i<516;i++)
        args[i] = 1;
rokmn3309의 이미지

값을 할당받고 나서의 값을 출력을 해보면은..
1로 채워진다면 출력값이 1이 되어야 할텐데.. 0으로 찍히는데..
물론 앞에 4개는 WIN_SMART, 0, SMART_READ_THRESHOLDS, 1 이렇게
입력한 값대로 들어가지만 그 이후에 4번째부터 515번까지는 0으로 채워져 있다고 출력이 됩니다..

체스맨의 이미지

인덱스 4부터 끝까지는 0이 채워지는 게 맞습니다. 제대로 테스트 된겁니다.
마지막 콤마는 있어도 되고 없어도 됩니다.

제가 그 소스는 보지 못해서 뭘 의미하는 지 구체적으로는 모르지만
아마도 커맨드 id 와 대응되는 숫자의 반복이고, 커맨드 id 가 0이되면
더 이상 커맨드가 존재하지 않음을 0으로 나타내는 식으로 코드가
만들어져 있는 것 같네요. 그러니까, WIN_SMART 나
SMART_READ_THRESHOLDS 같은 값은 적어도 0이 아니겠죠.

Orion Project : http://orionids.org

송지석의 이미지

아 그렇군요. 0으로 채워지는 것이군요.

지적해주셔서 감사합니다.

1로 채워지려면 어떻게 되는 것인지 찾아보다가 포기했습니다. 몾찾겠네요

체스맨의 이미지

C initializer 문법으로 나머지 모두를 1로 채우는 방법은 없습니다.
for 를 이용하거나, 지금 같은 경우는 1바이트 단위니까, memset 을
써도 되겠네요.

Orion Project : http://orionids.org

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.