If a Form or Anchor in an HTML file has been bound as an Activator in a project, then an HTML-related C/C++ module will be created and added to the project. This file contains a Function for each bound activator in the HTML file, and one Registration Function name for the module containing Registration Calls for the activators in that HTML file. It also contains any registration calls for Aliases to those Activators.
The C/C++ module also contains your globals and includes code section, where other functions can be declared or defined.
The name of the C/C++ module is derived from the name of the HTML file. Therefore, several issues must be considered. First, the module name is derived by removing the last "dot" extension from the HTML filename (if any) and appending ".c" for C mode or your C++ suffix for C++ mode. Because of this rule, it is possible to have a case where the HTML filenames are different but the module names would be the same. For example, the HTML files, products.HTML and products.txt, would have conflicting module names (prodcucts.c or products.cc).
Second, a more stringent consideration for choosing HTML filenames has to do with the Registration Function name mentioned previously. These Registration Functions are C/C++ Function Names and do not have static linkage. The Registration Function name is derived from the HTML file name, so any character that is not an aplhanumeric or an underscore in the HTML file name is converted to an underscore. Third, the "R_" is prepended. This solves the C/C++ function name issue, but there is more chance for HTML files of different names to produce the same registration function name for module names. For example, the HTML files, scott_prod.html and scott-prod.html, will both produce R_scott_prod_html as the registration function.
Another consideration is the conflicts of HTML files with other projects. For that reason you should work with only one project in one directory. Furthermore, if you set your project options to use the same HTML directory for all projects, then you must worry about the HTML file name conflicts across projects. Finally, the main C/C++ file is derived from your project name. But you must watch for conflicts with module names. For example, a project, mark.pj, and an HTML file, mark.html, will produce a the same Main and Module names. If you are looking to port to another O/S which has an 8.3 naming limit, then your HTML files will need to be named accordingly.