तो dot_product
क्या यह "कॉन्स्ट प्रतिबंधित" पॉइंटर तर्कों के लिए कानूनी है?
float dot_product(const float* restrict a, const float* restrict b, unsigned n);
के रूप में घोषित किया जाता है, साथ
dot_product(x, x, x_len)
"अनिर्धारित" हो यह बुला होगा C99 मानक के अनुसार?
संपादित
x
, एक सूचक, निश्चित रूप से है स्मृति के sizeof(float) * x_len
बाइट्स, x_len
unsigned
है की ओर इशारा करते। यह सवाल अलियासिंग के बारे में है।
मेरे पास उद्धरण के लिए मानक नहीं है, लेकिन मुझे कल्पना करना है कि यह अनिर्धारित व्यवहार है। आप स्पष्ट रूप से संकलक को बता रहे हैं कि कोई अन्य पॉइंटर्स उसी स्मृति स्थान को संदर्भित नहीं करता है, फिर उस संकेत का उल्लंघन करता है। मुझे नहीं लगता कि 'const'ness उस पर असर डालेगा। –
खुद का विरोध करने के लिए: यदि 'dot_product' एक डॉट उत्पाद की सामान्य परिभाषा है तो मुझे नहीं लगता कि यह * मायने रखता है *। यही है, 'प्रतिबंध' का उल्लंघन करना कोई फर्क नहीं पड़ता कि आप केवल सूचक पर पढ़ने के संचालन करते हैं। यह केवल तभी होता है जब आप लिखते हैं कि मैं मुद्दों की अपेक्षा करता हूं। –
क्या मुझे "संपादन" को हटा देना चाहिए? यह अनावश्यक लगता है। मुझे आश्चर्य हुआ कि ** दो ** लोगों ने मेरे प्रश्न को गलत समझा। – MaxB