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

Popular posts from this blog

oracle - The fastest way to check if some records in a database table? -

php - multilevel menu with multilevel array -

jQuery UI: Datepicker month format -