c - Give an integer value to a macro through AC_DEFINE -


मेरे एक आवेदन में एक CONNECTION_TIMEOUT स्थिर होता है (जिसका नाम काफी आत्म व्याख्यात्मक है) । इस स्थिर को पूर्वप्रक्रमक मैक्रो ( #define ) के रूप में परिभाषित किया गया है:

  #ifndef CONNECTION_TIMEOUT # परिभाषित करें CONNECTION_TIMEOUT 3 #endif   < पी> मैं  #ifndef  और  #endif  का उपयोग करने का कारण यहां है क्योंकि मैं चाहता हूं कि इस मैक्रो को समय संकलित करने पर कॉन्फ़िगर करने योग्य हो, जो कि  ./ के माध्यम से है कॉन्फ़िगर  स्क्रिप्ट इसे अनुमति देने के लिए, मैंने अपने  configure.ac  फ़ाइल में एक स्विच जोड़ा:  
  AC_ARG_WITH ([timeout], [AS_HELP_STRING ([- के साथ-टाइमआउट] , [...])]) AS_IF (["एक्स $ के साथ-टाइमआउट" = "x"], [AC_DEFINE_UNQUOTED [[CONNECTION_TIMEOUT], ["टाइम-टाइमआउट $"], ["..."] के साथ AS_IF )]   

यह करने के लिए धन्यवाद, उपयोगकर्ता एक कस्टम टाइमआउट मान के साथ आवेदन संकलन कर सकते हैं:

  ./ configure --with-timeout = 1 < / कोड>  

बात यह है, जब मैं ऐसा करता हूं, तो मेरा मैक्रो "1" के बजाय 1 के लिए सेट है इस वजह से, जब मैं इसे हेरफेर करने का प्रयास करता हूं ...

  int timeout = CONNECTION_TIMEOUT;   

... सूचक (चार *) पूर्णांक के लिए (int) , एक कलाकार के बिना काफी उम्मीद है।

मैं अपने मैक्रो को पूर्णांक मान सेट करने के लिए autoconf कैसे प्राप्त करूं, उद्धरण के बिना? मैंने एकल उद्धरण चिह्नों का प्रयोग करने की कोशिश की है, और AC_DEFINE लेकिन मैं इसे सही मान नहीं पा सकता ...

आप गलत शेल चर को डीरेफर करने का प्रयास कर रहे हैं। Autoconf के साथ- with-timeout तर्क के मूल्य को $ with_timeout (नोट: हाइफ़न के बजाय अंडरस्कोर) के रूप में प्रस्तुत करता है अभिव्यक्ति $ के साथ- timeout संरूपित- uninitialized वेरिएबल $ के साथ और शब्दशः स्ट्रिंग -timeout < P> दूसरे शब्दों में,

  AC_DEFINE ([CONNECTION_TIMEOUT], [$ with_timeout]) का उपयोग करें    

Comments

Popular posts from this blog

Out of index C/C++ -

regex - PatternSyntaxException: while using String.ReplaceAll function in java? -

java - Projects which are accessed via multiple (different) IDEs: Ant or Maven? -