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 the noreturn 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.