मैं इस बात को लेकर उत्सुक हूं कि क्या संकलन के समय यह सुनिश्चित करना संभव है कि किसी विधि को एक स्थान पर बुलाया जाए।
ध्यान दें कि यदि फ़ंक्शन को एक से अधिक बार (जैसे लूप में) कहा जाता है तो यह ठीक है - लेकिन इसे दो अलग-अलग छोरों में नहीं बुलाया जाना चाहिए।
इसे दो भागों में तोड़ा जा सकता है, मुझे उन समाधानों में भी दिलचस्पी है जो किसी भी हिस्से को कवर करते हैं:
(ए) सुनिश्चित करें कि एक विधि को कम से कम एक जगह कहा जाता है
(बी) सुनिश्चित करें कि एक विधि को एक ही स्थान पर बुलाया जाता है
कोड की संरचना पर मेरा पूर्ण नियंत्रण है, और समान विचार प्राप्त करने वाले विभिन्न मुहावरे स्वागत योग्य हैं।
// class.h
class MyClass {
public:
void my_method();
}
निम्नलिखित को संकलित नहीं किया जाना चाहिए (कभी नहीं कहा जाता है)
#include "class.h"
int main() {
MyClass my_class;
}
निम्नलिखित को संकलित नहीं किया जाना चाहिए (एक से अधिक स्थानों में कहा जाता है)
#include "class.h"
int main() {
MyClass my_class;
my_class.my_method();
while(true) {
my_class.my_method();
}
}
निम्नलिखित को संकलित किया जाना चाहिए (वास्तव में एक ही स्थान पर):
#include "class.h"
int main() {
MyClass my_class;
while(true) {
my_class.my_method();
}
}
__COUNTER__मैक्रो का उपयोग कर सकते हैं । कुछ इस तरह static_assert(__COUNTER__ == 0); my_class.my_method();। हालाँकि, काउंटर प्रत्येक अनुवाद इकाई में रहता है, इसलिए आप केवल जाँच सकते हैं कि फ़ंक्शन को एक बार प्रति अनुवाद इकाई कहा जाता है।