2016-07-27 6 views
0

이것은 헤더 파일입니다. 하지만 main.c에 포함 시키면 다음 오류가 발생합니다 : 예상 식별자 또는 '('앞에 'float'이 있습니다. 아주 바보 같은 오류가 될 수 있지만 코드가 표시되지 않습니다. 코드는함수를 선언하는 중 오류가 발생했습니다.

입니다.
#ifndef Reference 
#define Reference 
float mat_a[3][3]; 
struct Reference_XS 
{ 
int Bytes; 
unsigned char *Buffer_Lectura; 
}; 
struct Reference_XS Sist_Referecence(float q0,float q1,float q2,float q3,float val1,float val2,float val3) 
{ 
float mat_a={(2*q0*q0)+(2*q1*q1)-1, (2*q1*q2)-(2*q0*q3), 2*q1*q3)+(2*q0*q1), (2*q1*q2)+(2*q0*q3), (2*q0*q0+(2*q2*q2)-1), (2*q2*q3)-(2*q0*q1), (2*q1*q3)-(2*q0*q2), (2*q2*q3)+(2*q0*q1), (2*q0*q0)+(2*q3*q3)-1}; 
float mat_b[3][1]={val1,val2,val3}; 
float mat_c[3][1]; 
int i,k; 
float temp=0; 
for(i=0;i<3;i++) 
{ 
    temp=0; 
    for(k=0;k<3;k++) 
    { 
     temp=mat_a[i][k]*mat_b[k][0]+temp; 
     mat_c[i][0]=temp;  
    } 
} 
struct Reference_XS data={mat_c}; 
return data; 
} 
#endif 
+0

당신은 헤더 파일에 함수 정의가 있습니까? 나는 나갔다. –

+3

나는 15 년 동안 C를 사용하지 않았지만, 그것은 당신의 코드가'struct' 내부에'for' 루프를 가진 것처럼 보인 것을 막지 못했습니다. 아마도 이것이 오류가 될 수 있습니까? –

+0

'mat_a '에 괄호가 맞지 않았습니다. 용어를 분해하고 사전 처리라는 용어를 고려해 두는 것이 좋습니다. 그렇게 쓰는 것은 그리 어렵지 않습니다. –

답변

1

첫 번째 실수는 당신의 플로트 mat_a 변수가 초기화 목록을 사용하여 초기화되어있다. 당신의 mat_a 변수의 초기화를 살펴 그러나 당신은 mat_a 후 배열 idientifier를 추가하는 것을 잊었다해야합니다. 해야 할 일은 float mat_a [N]입니다. 여기서 N은 배열에 포함 된 요소의 수입니다.

두 번째 오류는 문에 th 둥근 브래킷을 열었을 때. 두 번째 쉼표 뒤에 괄호가 누락되었습니다. 이 문장에서

float mat_a={(2*q0*q0)+(2*q1*q1)-1, (2*q1*q2)-(2*q0*q3), (2*q1*q3)+(2*q0*q1), (2*q1*q2)+(2*q0*q3), (2*q0*q0+(2*q2*q2)-1), (2*q2*q3)-(2*q0*q1), (2*q1*q3)-(2*q0*q2), (2*q2*q3)+(2*q0*q1), (2*q0*q0)+(2*q3*q3)-1}; 
+1

... 그리고 {{}}에 의해 초기화 될 수없는 단일 플로트입니다. –

+0

@IngoLeonhardt 답변을 게시 한 직후에 그것을 보았고 두 가지 오류를 모두 포함하도록 답변을 편집했습니다 :) – Codebrewer

+1

@Ingo Leonhardt : C의 모든 것은'{...} '에 의해 초기화 될 수 있습니다. 그러나'{...} '사이에 적절한 수의 초기화 프로그램을 제공하는 것이 필수적입니다. – AnT

1

float mat_a={(2*q0*q0)+(2*q1*q1)-1, (2*q1*q2)-(2*q0*q3), 2*q1*q3)+(2*q0*q1), (2*q1*q2)+(2*q0*q3), (2*q0*q0+(2*q2*q2)-1), (2*q2*q3)-(2*q0*q1), (2*q1*q3)-(2*q0*q2), (2*q2*q3)+(2*q0*q1), (2*q0*q0)+(2*q3*q3)-1}; 

여러 이니셜 라이저와 스칼라 객체를 초기화하려고하고 또한 세 번째 초기화가 여는 괄호

2*q1*q3)+(2*q0*q1), 

^^^

이없는 DORS

대신에 이름이 mat_a 인 배열을 정의하려는 것 같습니다. f 스칼라 객체.

관련 문제