📄 readme.doc
字号:
follows:
#pragma optimize( "elg",off )
. . . {function containing setjmp or longjmp}
#pragma optimize( "",on )
Features added since the documentation was printed:
- /BATCH Option. To disable prompting for library names or
other information and permit the use of CL in a batch or
command file, specify the /BATCH option.
- To get the fastest possible code, use the following
optimization settings:
/Oxaz /Grs
The /Oz option causes the compiler to perform the most
aggressive type of loop optimization.
To get the smallest possible code, use the following
settings:
/Osleazr
For small code with a greater margin of safety, use
/Osler
- The /Gh option allows building with Microsoft Windows 2.x
libraries. This option is not needed for versions of Windows
greater than 2.x. In addition, this feature exists only in C
6.0, and will be phased out in future versions of the
compiler.
C Language notes:
- The return values for _setfont as described in on-line help
are incorrect. The _setfont function returns the font index
number if successful, or a negative number if unsuccessful.
- The return values for the fstat function are described
incompletely in on-line help. Under DOS or versions of
OS/2 prior to 1.2, fstat returns the same value (the
modification time) in the st_mtime, st_atime, and st_ctime
fields, because that is the only value maintained by the
system.
However, under OS/2 1.2's High Performance File System,
fstat returns the expected values in st_mtime (time the
file was last written), st_atime (time the file was last
accessed for reading or writing), and st_ctime (time the
file was created).
- You cannot use a tag or typedef to add the members of an
anonymous (nameless) struct or union to another anonymous
struct or union. Instead, you must give the full definition
of the struct to be nested. Assume you have the following
anonymous struct:
struct oneTag
{
int aMem;
int bMem;
};
The following code fragment shows the incorrect way to
include the members of this struct in another anonymous
struct:
struct anotherTag
{
struct oneTag; // INCORRECT
int cMem;
};
The correct method is to specify the nested struct fully:
struct anotherTag
{
struct // CORRECT
{
int aMem;
int bMem;
};
cMem;
};
- The signal function has limitations when used to build
multithreaded applications or dynamic-link libraries.
Specifically, only signal(SIGFPE,...) is supported in a
multithreaded environment. To trap error or interrupt
conditions in this case, use direct calls to
DOSSETSIGHANDLER or DOSSETVEC.
================< Part 4: Programmer's WorkBench (PWB) Notes >==============
PWB Build Procedure
-------------------
When developing programs with PWB, you usually follow these basic
steps:
- Edit your source file or files.
- Use the Build Options command on the Options menu to set
initial build options.
- Use the Compiler Options and Link Options commands to adjust
specific parameters.
- If you are building a multimodule program, use Set Program
List on the Make menu to specify the files that will be
included in the program.
- Choose Build or Rebuild All from the Make menu to
build your program.
For more information, choose "Building and Running Programs" from
the Programmer's WorkBench contents screen in on-line help.
Building Presentation Manager Applications in PWB
-------------------------------------------------
The Presentation Manager build options in PWB assume that
functions in your program use the _loadds attribute in the
functions that require it and that exported functions are
identified with the _export keyword.
If your program does not identify exported and/or _loadds
functions in the function header, you need to do two things to
build the program successfully under PWB. First, select the
Windows Entry/Exit Codes check box in the C Compiler Options
dialog box. This is the equivalent of specifying /Gw on the
command line.
Second, make sure the exported function names in your .DEF file
are all in uppercase so that they can be found correctly at link
time. You can also build the program successfully by disabling
the No Ignore Case option in the Link Options dialog box, but
this is not recommended.
In particular, you will have the problems described here if you
use PWB to build the example programs in Charles Petzold's book
"Programming the OS/2 Presentation Manager." Programs built using
the makefiles provided in the book will run correctly, but
programs built from within PWB must follow the instructions
specified above.
Loading PWB Quickly
-------------------
PWB consists of the basic editor and four editor extensions that
contain the functionality for building, linking, on-line help,
and the Source Browser. These editor extensions are loaded
automatically each time you invoke PWB.
If you want PWB to load more quickly, you can rename some or all
of the PWB extensions and then load them only when they are
needed.
For example, you can change the names of all the extension files
from *.MXT (DOS) or *.PXT to *.EXT. Then include the following
section in your TOOLS.INI file:
[pwb-ext]
load:$PATH:pwbhelp.ext ;On-line Help
load:$PATH:pwbc.ext ;C compiler
load:$PATH:pwbrowse.ext ;Source Browser
load:$PATH:pwbutils.ext ;LINK, NMAKE, and CodeView
To load all the extensions at once, execute the following in PWB:
arg "ext" initialize
With the default key assignments, this is
ALT+A "ext" SHIFT+F8
To load a single extension--the help extension, for example--you
can use the following:
arg "load:$PATH:pwbhelp.ext" assign
With the default key assignment, this translates to
ALT+A "load:$PATH:pwbhelp.ext" ALT+=
If you decide to rename the extensions and thus disable the
extension autoload feature of PWB, you still have the option
of starting up PWB with all the extensions loaded.
To do this, define a macro in the PWB section of TOOLS.INI
and assign it to a key of your choice. The following TOOLS.INI
entry creates a macro called 'extload' and assigns it to the F11
key:
extload:=arg "ext" initialize
extload:F11
Then when you start PWB, you can use the /e option to execute
'extload' on start-up:
PWB /e extload
PWB Notes
---------
- In OS/2 1.1, starting up PWB on a dual-monitor system will
result in PWB appearing on the monitor that was active at
the time the system was booted.
For example, suppose you have both a color and a monochrome
monitor, and the color monitor is the active monitor when you
boot your machine. If you switch to the monochrome monitor
and then invoke PWB, PWB will appear on the color monitor.
This problem does not exist under OS/2 1.2.
- To avoid conflict with special characters used by the
PWB MAKE facility, file names in a PWB program list or in
customized build options can only have extensions that
contain the following characters:
0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -