어떻게 할당한다는건지 모르겠습당..
      글쓴이: rokmn3309 / 작성시간: 토, 2003/03/08 - 10:49오전    
  
  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에 대해서 선언하고 있는데
관련함수들을 설명한 문서라도 구할수 있을까요?..
리플 부탁드립니다.
Forums: 


Re: 어떻게 할당한다는건지 모르겠습당..
args[4] 부터 args[515] 까지는 모두 1 로 채워집니다.
좀더 자세히좀...
__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이기 때문
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;rommance.net
값을 출력해보면은...
값을 할당받고 나서의 값을 출력을 해보면은..
1로 채워진다면 출력값이 1이 되어야 할텐데.. 0으로 찍히는데..
물론 앞에 4개는 WIN_SMART, 0, SMART_READ_THRESHOLDS, 1 이렇게
입력한 값대로 들어가지만 그 이후에 4번째부터 515번까지는 0으로 채워져 있다고 출력이 됩니다..
Re: 값을 출력해보면은...
인덱스 4부터 끝까지는 0이 채워지는 게 맞습니다. 제대로 테스트 된겁니다.
마지막 콤마는 있어도 되고 없어도 됩니다.
제가 그 소스는 보지 못해서 뭘 의미하는 지 구체적으로는 모르지만
아마도 커맨드 id 와 대응되는 숫자의 반복이고, 커맨드 id 가 0이되면
더 이상 커맨드가 존재하지 않음을 0으로 나타내는 식으로 코드가
만들어져 있는 것 같네요. 그러니까, WIN_SMART 나
SMART_READ_THRESHOLDS 같은 값은 적어도 0이 아니겠죠.
Orion Project : http://orionids.org
아 그렇군요. 0으로 채워지는 것이군요.지적해주셔서 감사합니다.
아 그렇군요. 0으로 채워지는 것이군요.
지적해주셔서 감사합니다.
1로 채워지려면 어떻게 되는 것인지 찾아보다가 포기했습니다. 몾찾겠네요
rommance.net
C initializer 문법으로 나머지 모두를 1로 채우는 방법은 없습
C initializer 문법으로 나머지 모두를 1로 채우는 방법은 없습니다.
for 를 이용하거나, 지금 같은 경우는 1바이트 단위니까, memset 을
써도 되겠네요.
Orion Project : http://orionids.org
댓글 달기