Borland C++ Builder and Kylix
Borland has several extensions to C++ to support its Rapid Application Development products: C++ Builder (for Microsoft Windows) and Kylix (for Linux). This section presents highlights of the RAD extensions.
_ _closure
In C++ Builder, a closure is like a pointer to a member function that has been bound to a specific object. Given a closure, you can call it the way you would call an ordinary function. To declare a closure type or object, use
_ _closure
as a modifier for the name of a function pointer:typedef int (* _ _closure MemFunc)(int); MemFunc func; struct demo { int sqr(int x) { return x * x; } }; demo d; func = d.sqr; int n = func(10); // n = 100
_ _declspec
The
_ _declspec
keyword takes an attribute in parentheses and serves as a declaration specifier. Depending on the attribute, it can be used to modify a function, object, or class. For example,_ _declspec(noreturn)
is a function specifier that tells the compiler that the function does not return, which permits additional optimization and error-checking (for example, eliminating statements that follow a call to thenoreturn
function):void _ _declspec(noreturn) abort( );
Other attributes include:
thread
A storage-class specifier that declares an object to be local to a thread; that is, each runtime thread has a separate copy of the object.
dllexport
A function specifier that tells the linker to export the function name from a dynamic-link library (DLL).
uuid(
string-literal
)
Modifies a class declaration. ...
Get C++ In a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.