Dealing with warnings in c compilations -
मेरे पास संकलन के दौरान निम्नलिखित चेतावनियां हैं:
solver.c: 24: चेतावनी : असंगत सूचक प्रकार से 'mtrx_multiple' का तर्क गुजर रहा है mat.h: 5: नोट: अपेक्षित 'डबल *' लेकिन तर्क 'डबल **' solver.c की है: चेतावनी: असाइनमेंट बिना किसी पूर्णांक से सूचक बनाता है डाली solver.c: 39: चेतावनी: असाइनमेंट पूर्णांक से एक कास्ट /tmp/ccmU9zRf.o के बिना पॉइंटर बनाता है: फ़ंक्शन `vec_norm ': math.c :(। टेक्स्ट + 0x331):` sqrt' संग्रह 2 के लिए अनिर्धारित संदर्भ: ld 1 बाहर निकलने की स्थिति
लौटे हैं:
solver.c
डबल * cg_solve ( Sparse_mat_t ए, डबल * ख, डबल * x) {डबल * ए; डबल ** आर; डबल * हो; डबल ** p; डबल ** x0; X0 [0] = वीसीकॉपी (एक्स, आकार); ... रेखा 24: आर [0] = वीक_स्यूबट्रक्शन (बी, एमटीएक्स_मल्टीप्ल (ए, एक्स 0), आकार); रेखा 30: x0 [k + 1] = vec_addition (x0 [k], vec_numb_multiple (a [k], पी [k], आकार), आकार); रेखा 39: पी [के + 1] = vec_addition (r [k + 1], vec_numb_multiple (हो [k], p [k], आकार), आकार); }
math.h
पंक्ति 5: डबल * mtrx_multiple (sparse_mat_t ए, डबल * c);
फ़ंक्शन जिसका उपयोग वहां किया जाता है: ( math.c
)
डबल * vec_subtraction (डबल * ए, डबल * B, int n) {डबल * परिणाम = मॉलोक (आकारफ (डबल) * n); Int i; के लिए (i = 0; i & lt; n; i ++) परिणाम [i] = एक [i] -बी [i]; वापसी परिणाम; } डबल * vec_addition (डबल * ए, डबल * बी, इंट एन) {डबल * परिणाम = मॉलोक (आकारफ (डबल) * n); Int i; के लिए (i = 0; i & lt; n; i ++) परिणाम [i] = एक [i] + बी [i]; वापसी परिणाम; } डबल * vec_numb_multiple (डबल ए, डबल * ख, इंट एन) {डबल * परिणाम = मॉलोक (आकारफ (डबल) * n); Int i; के लिए (i = 0; i & lt; n; i ++) परिणाम [i] = एक * ख [i]; वापसी परिणाम; } डबल * mtrx_multiple (sparse_mat_t ए, डबल * c) {डबल * परिणाम; Int i, j; परिणाम = मॉलोक ((ए। आकार) * आकार * परिणाम); Printf ("c.n:% d \ n", एसिज़); के लिए (i = 0; i & lt; एसिज़; i ++) {int v = 0; के लिए (जे = एआईएआई [आई]; जे एंड एलटी; एआईएआई [आई + 1]; जे ++) {वी + = ए.ए.ए. [जे] * सी [एजा [जे]]; } परिणाम [i] = वी; } वापसी परिणाम; } डबल vec_norm (डबल * ए, इंट एन) {डबल परिणाम; Int i; के लिए (i = 0; i & lt; n; i ++) परिणाम = परिणाम + (एक [i] * a [i]); परिणाम = sqrt (परिणाम); वापसी परिणाम; } डबल * वीकैक्पीपी (डबल * ए, इंट एन) {डबल * परिणाम; Int i; के लिए (i = 0; i & lt; n; i ++) परिणाम [i] = एक [i]; वापसी परिणाम; }
मैं किसी भी मदद के लिए आभारी होंगे।
संपादित करें
मुझे एक्स 0 समस्या का हल मिल गया, धन्यवाद बेन अब क्या छोड़ा गया है:
solver.c: 30: चेतावनी: असाइनमेंट एक कलाकार सॉल्वर के बिना पूर्णांक से संकेतक बनाता है। चेतावनी: असाइनमेंट पूर्णांक से कोई कलाकार / बिना टीएमपी / CcL4uSoH.o: फ़ंक्शन में 'vec_norm': math.c :(। पाठ + 0x331): 'sqrt' के लिए अपरिभाषित संदर्भ 'संग्रह 2: ld 1 से बाहर निकलने की स्थिति में वापस आ गया है
< Div class = "post-text" itemprop = "text">
आपने जो पोस्ट किया है उसके आधार पर, मैं अनुमान लगाता हूं कि आपके पास vec_numb_multiple
के लिए कोई घोषणा नहीं है इससे पहले कि आप इसे कहते हैं, और कंपाइलर इंटर्न पर लौटने के लिए निहित तरीके से टाइप कर रहा है; इससे लाइनों 30 और 39 पर चेतावनियां मिलेंगी।
sqrt ()
के लिए अपरिभाषित संदर्भ का मतलब है कि आप मानक गणित पुस्तकालय में नहीं जुड़ रहे हैं; मैं मान रहा हूं कि आप जीसीसी इस्तेमाल कर रहे हैं, इसलिए आपको कमांड लाइन में -lm
जोड़ना होगा।
यह अपने खुद के कोड के लिए एक मानक पुस्तकालय फ़ाइल नाम का उपयोग करने के लिए एक बहुत बुरा विचार है (math.h, math.c)।
Comments
Post a Comment