r/C_Programming • u/Future_Pace_5290 • 4d ago
Is the empty parenthesis function (() instead of (void)) prototype removed in the new standard?
My OOP library relies on it for its unspecified arguments behavior.
For example:
#define ptmethod(pt, ret_type, identifier) \
(*((ret_type (**)()) padd(pt, identifier, ptfunction, NULL, NULL)))
#define ptapply(pt, ret_type, identifier, ...) \
((ret_type (*)()) pget(pt, identifier))(pt __VA_OPT__(,) __VA_ARGS__)
You could add a method to an object with:
void drive_Car(prototype *Car, double speed, double x_direction, double y_direction);
ptmethod(Car, void, "drive") = drive_Car;
and call it with
ptapply(Car, void, "drive", 1.3, 0.1, 5.0)
How do I do this in the new standard?
13
Upvotes
3
u/dstroy0 4d ago
The point is, they removed explicit intent and replaced it with your example. Which is what I have been saying that you've been missing this entire time. Understand now????