अगर मेरे पास है, उदा .:

#include <stdlib.h>
int f(void) { return 42; }
int g(void) { return 43; }
int main()
{
    if(f()!=g())
        abort();
}

क्या कोर डंप से f() और g() के रिटर्न वैल्यू को प्राप्त करना संभव है, बिना मूल कोड के उन्हें वेरिएबल में असाइन किया गया है? (int lhs, rhs; if((lhs=f())!=(rhs=g())) abort();)

2
PSkocik 13 अक्टूबर 2018, 01:53

1 उत्तर

सबसे बढ़िया उत्तर

नहीं-इनलाइनिंग के बिना भी, तुलना को घटाव के रूप में संकलित किए जाने की संभावना है, जिसके बाद शून्य के खिलाफ एक परीक्षण किया जाता है, जैसे कि डंप के समय कम से कम एक वापसी मूल्य अब मौजूद नहीं था (रजिस्टरों या मेमोरी में)।

अनुकूलन के साथ, यहां तक ​​​​कि चर में मूल्यों को संग्रहीत करने से कोई मदद नहीं मिलती है: यह निश्चित रूप से मृत भंडार को खत्म कर देगा।

2
Davis Herring 12 अक्टूबर 2018, 22:58