2012-10-08 2 views
1

C에서 무효 식의 잘못된 사용 오류에 대한 다음과 같은 기능 :오류 : I는 "무효 표현의 잘못된 사용"을 얻고있다

나는이 비슷한에 대한 다른 스레드에서 읽은 것과 지금
void remove_data(char* memory, char* bitmap, int pos) 
{ 
    int i; 

    i = (int)test_bit(bitmap, pos-1); 

    if(i != 0) 
    { 
     memory[pos-1] = NULL; 
     toggle_bit(bitmap, pos-1); 
    } 
} 

프로그래머가 출력을 생성하는 함수 내에서 무언가를 사용하면이 오류가 발생합니다. 그러나 필자가 작성한 코드에서 그 원인이 무엇인지 알 수 없습니다. 또한 무효 입력되어 그 안에 사용

토글 비트 기능을하고 값을 반환하지 않습니다

편집 추가 할 수 있습니다.

void test_bit(char * bitmap, int pos) 
{ 
    int bit; 

    bit = bitmap[pos/8] & (1<<(pos%8)); 
    printf("%d\n", &bit); 
} 

test_bit의 printf 행에 주석을 달았지만 오류가 여전히 있습니다.

+3

정확히 어디에서 오류가 발생하며 'test_bit' 및'toggle_bit'의 선언은 무엇입니까? – Zeta

+2

toggle_bit은 무의미한 것 같아 test_bit 정의를 보여 주어야한다. – CapelliC

+0

void test_bit에 printf가있다. remove_data에서 오류를 찾는데 집중했다. 호출 한 함수를 완전히 잊어 버렸다. – Kali

답변

8

However, I'm failing to see what would cause that in the code I've written.

나도 관련 코드를 게시했다고 생각하지 않기 때문에.

i = (int)test_bit(bitmap, pos-1); 

test_bit 우리에게 서명을 제시해주십시오 : 관계없이,이 아마 문제라고 생각합니다. 함수가 void (즉, 아무것도) 반환

void test_bit(char*, int); 

때문에 당신이 다음 (아무것도없는) 반환 값을 캐스팅 진행할 수 없습니다에 : 나는 void을 반환하거나 앞으로 어딘가에 선언 실수로 썼다 같은데요 int 당신이하고있는 것처럼, 그것은 이해가되지 않으며 불법입니다.

편집 : test_bit이 실제로 void을 반환한다고 알았으므로 문제가됩니다.

0

test_bit은 무효이므로 반환 할 수 없습니다 (i = (int)test_bit(bitmap, pos-1);). 반환 값이 없습니다. 캐스트가 왜

0

당신은

i = (int)test_bit(bitmap, pos-1); 

을 썼다? 함수가 도대체 ​​정수로 공백을 변환 할 수있는 방법

void test_bit(char * bitmap, int pos) 
{ 
    int bit; 

    bit = bitmap[pos/8] & (1<<(pos%8)); 
    printf("%d\n", &bit); 
} 

인 경우

조금 바보 같아?

+1

무례 할 필요가 없습니다. – Nirro

관련 문제