2011-08-16 6 views
1

방정식 시스템의 해답을 얻을 필요가 있습니다. 이 목적을 위해 나는 sgesv_() 함수를 사용한다.호환되지 않는 포인터 유형 ?? 이상한

모든 것이 효과적이며 솔루션의 올바른 결과를 되 찾을 수 있습니다.

하지만 이상한 경고가 표시됩니다.

경고 : 애플은 WWDC 비디오에 사용 나는이 기능을 사용하고

호환되지 않는 포인터 타입

에서 'sgesv_'의 인수 3을 전달합니다.

내가 뭘 잘못하고 있니?

는 A1, A2, B1, B2, C1, C2 세번째 파라미터는 float * 것으로 의미 플로트

 __CLPK_integer info; 
     __CLPK_integer n=2; 
     __CLPK_integer nb=1; 
     __CLPK_integer ipiv[n]; 
     float A[n][n]; 
     A[0][0]=a1; 
     A[0][1]=a2; 
     A[1][0]=b1; 
     A[1][1]=b2; 
     float B[n]; 
     B[0]=-c1; 
     B[1]=-c2; 
     sgesv_(&n, &nb, A, &n, ipiv, B, &n, &info); 
+0

sgesv_()가 작성한 항목이 있습니까? 그 코드도 게시 할 수 있습니까? –

+0

+1 경고를 이해하고 해결할 수 있도록 충분히 동기 부여를 받았습니다! –

답변

4

되어 있지만 플로트의 2 차원 어레이를 전달하고있다. 이 플로트가 올바른 순서로 진행되는 것입니다. 경고를 제거하려면이 작업을 수행 할 수 있습니다

sgesv_(&n, &nb, &A[0][0], &n, ipiv, B, &n, &info); 

나이 :

sgesv_(&n, &nb, A[0], &n, ipiv, B, &n, &info); 

또는 심지어이 :

sgesv_(&n, &nb, (float *)A, &n, ipiv, B, &n, &info); 

아니면 단지를 A 배열을 "결합"수, 예

float A[n * n]; 
    A[0 * n + 0] = a1; 
    A[0 * n + 1] = a2; 
    A[1 * n + 0] = b1; 
    A[1 * n + 1] = b2; 
    // ... 
    sgesv_(&n, &nb, A, &n, ipiv, B, &n, &info); 
+0

경고가 사라졌습니다. 많은 감사 폴 !! – saimonx

+1

우수 답변. –

관련 문제