#include <X11/Shell.h>
#include <X11/Xatom.h>
#include <Xm/XmStrDefs.h>
#include <Xm/VirtKeys.h>
Therefore, none of these files ever need to be included by your application, as long as you include <Xm/Xm.h>. Since
<Xm/Xm.h> is included by each widget header file, you do not need to include it directly either. If you look closely at
the code, you'll see that just about every necessary header file is included the moment you include your widget header
file. This method of using header files contrasts with the way other Xt−based toolkits, like the Athena toolkit or the
OPEN LOOK Intrinsics Toolkit (OLIT), use header files.
Release 1.2 of the Motif toolkit provides a new header file, <Xm/XmAll.h>, that simply includes all of the public
header files. The <Xm/ExtObject.h>, <Xm/Traversal.h>, <Xm/VaSimple.h>, and <Xm/VendorE.h> header files are
present in Motif 1.1, but they are obsolete in Motif 1.2.
We recommend that you not duplicate the inclusion of header files. One reason is that if you include only the header
files that you need, whoever has to maintain your code can see which widgets you are dealing with in your source
files. Another reason is that duplicating header files is generally bad practice, as you run the risk of redeclaring
macros, functions, and variables.
However, it isn't always easy to prevent multiple inclusions. For example, <Xm/Xm.h> is included by each widget
header file that you include. All of the Motif, Xt and X header files are protected from multiple inclusion using ...