C vs. C++
Typically, C design pattern to create a re-usable module is performed like so:
typedef struct {
int target_ms;
int interval_ms;
} timer_t;
void timer_start(timer_t *t, uint32_t interval);
void timer_stop(timer_t *t);
bool timer_expired(timer_t *t);
On the other hand, C++ for the same module would be:
class timer
{
public:
void start(uint32_t interval);
void stop();
bool expired();
private:
int target_ms;
int interval_ms;
};
Code analysis
void main(void)
{
/**
* C convention:
* object_method(&obj)
* Then you pass the object as the first parameter to the methods to "operate on" this object
*/
timer_t t;
timer_start(&t, 1000);
timer_stop (&t);
/**
* C++ convention:
* obj.method()
*
* C++ automatically passes the object pointer, known as the "this" pointer to the method
* In reality, the language and the compiler is invoking the methods just like C:
* timer::start(&obj, 1000);
*/
timer t;
t.start(1000);
t.stop();
}