- 締切済み
ライブラリで宣言した構造体が認識されない
ライブラリのヘッダファイル complex.h #ifndef COMPLEX_H #define COMPLEX_H #ifdef __cplusplus extern "C"{ #endif typedef struct{ double real,imaginary; } COMPLEX; extern int complex_error_code; extern COMPLEX add_complex(COMPLEX a ,COMPLEX b); #ifdef __cplusplus } #endif #endif ライブラリのソースファイル complex.c #include <stdio.h> #include <math.h> #include "complex.h" int complex_error_code = 0; COMPLEX add_complex(COMPLEX a ,COMPLEX b) { COMPLEX c; c.real=a.real+b.real; c.imaginary=a.imaginary+b.imaginary; return c; } 動作確認のアプリケーションファイル test_complex.c #include <stdio.h> int main(void) { COMPLEX z,z1,z2; z1={1.0,1.0}; z2={2.0,2.0}; z=add_complex(z1,z2); printf("%lf+%lfi",z.real,z.imaginary); return 0; } COMPLEX undeclared (first use in this function) というエラーメッセージが出て、宣言したはずの構造体COMPLEXが認識されていないようなのですが、理由がわかりません。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19841)
test_complex.cで #include "complex.h" してないから「COMPLEXは未定義(この関数で初めて使われた)」って怒られる。 #includeを一切しないで、いきなり FILE *fp; って宣言したら FILE undeclared (first use in this function) って怒られるでしょ?それと同じ。
お礼
やってみたら無事に解決できました。 本当にありがとうございました。