gnu make - using variables in multiline define in gnumake -


मेकफाइल:

  परिभाषित करें t1 a = $ 1 $ (info $ (a) - - $ (1)) endef list = xyz $ (foreach v, $ (सूची), $ (eval $ (call t1, $ (v))))   

आउटपुट

  - xx - yy - z   

समस्या एक आह्वान द्वारा 'ए' के ​​मूल्य की देरी कर रही है यहां तक ​​कि a: = $ 1 एक ही मुद्दा दिखाता है

कोई त्वरित सुधार?

यह ग्नु बनाओ 3.81 है।

यह एक साथ कॉल और eval का उपयोग करने के बारे में भ्रामक चीजों में से एक है: अतिरिक्त उद्धरण जोड़ने के लिए समस्या यह है कि कॉल फ़ंक्शन पहले लागू किया जाता है, और यह एक बार तर्क का विस्तार करेगा तब eval कहा जाता है और वह इसका तर्क ( कॉल से आउटपुट) का मूल्यांकन करता है।

आपके उदाहरण में, कोड> जानकारी फ़ंक्शन का कॉल द्वारा पहली बार मूल्यांकन किया जा रहा है, और इसलिए उस स्थिति में a अभी तक सेट नहीं किया गया है (क्योंकि यह तब तक सेट नहीं है जब तक eval फ़ंक्शन चलाता है)। तो आपको उस फ़ंक्शन से बचने की आवश्यकता है, और a :

  को परिभाषित करें t1 a = $ 1 $$ (info $$ (a) - $ (1 )) Endef    

Comments

Popular posts from this blog

asp.net - Procedure or function "Procedure name" expects a parameter "Param name" which was not supplied occurs rarely -

c# - The item with identity 'Id' already exists in the metadata collection. Parameter name: item -

c++ - Redefined variable in the other module -