您好,欢迎光临本网站![请登录][注册会员]  
文件名称: Lcc C Compiler
  所属分类: C
  开发工具:
  文件大小: 6mb
  下载次数: 0
  上传时间: 2010-09-30
  提 供 者: ywj****
 详细说明: aWhat's new in the new version of lcc-win ---------------------------------------- Dec 3: Added SphericalBesselY + SphericalBesselK + SphericalBesselJ to the special functions package. Updated the documentation. Dec 2: Fixed problems with comparisons between 64 bit constants. Fixed problems with constant expressions (constant < cont1) ? const 2 : const 3;) That expression would not be simplified at compile time. This is an error that comes all the way from the original lcc compiler... Oct 31: Overloaded functio ns with variable argument lists weren't recognized as such. Fixed. Oct 27: Problem linking the string library fixed. Oct 22: Constant folding has been improved to optimize calls to math functions like sqrt(5) that will be replaced by their value without generating any function call. Oct 6: Division of a constant by the result of a shift operation would yield incorrect code generation in some setups. Fixed. Sep 29: Corrected error when reading a constant integer as a pointer, within a structure or array initialization. Corrected an error when parsing numbers that are similar to complex numbers. A misplaced pointer access produced a crash. More tests for designated initializers. Sep 6: Corrected all bug reports for designator initializers. Sep 4: Added support for designator initializers of C99. Watch out for bugs since there is a lot of rewritten code in structures/arrays initialization. Aug 26: This declaration would not be recognized: void fn(size_t n,char tab[*]) {} This is C99. Fixed. Aug 25: Fixed crash when parsing complex numbers. Fixed problem within the optimizer. Added functions beginthread/endthread Fixed several problems with declarations, that now can appear in any order as required by the standard. July 15: When a static inline function is not used, the compiler should NOT complain. Eliminated that warning. Some declarations like "int long volatile long" were not correctly recognized. Fixed. When an overloaded function is defined that has a parameter with the same name as the name of the function the compiler would erronously reject the code with a redefinition diagnostic. Fixed. June 15: double _Complex and _Complex double are equivalent. This wasn't recognized by the compiler. Fixed. June 14: First version of the 64 bits version available in the professional edition. June 5: According to the standard, "long int long" is legal and should be understood as long long. May 8: Incrementing a long long had a typo in the machine description, what led to bad code generation. Fixed. Apr 24: Tables of qfloats were not initialized properly. Mar 24: When you give the -ansic option, the file complex.h wasn't compiling correctly. Fixed. The following standard code: int operator = (42); was mistakenly confused with an operator declaration. Fixed. Incrementing a 64 bit int array would not work correctly. Fixed. Functions Fresnel, FresnelS and FresnelC were added to the special functions package. Mar 6: If you write: for (i=0; i<10;i++) { int vlaArray[1024*10*i]; // rest of the block } The memory allocated at each pass wasn't being released and in some extreme cases you would crash because the stack wasn't being reclaimed. Fixed. This bug was reported by Mr Erwin Lindermann. Mar 5: Added several math functions like HarmonicNumber, and others. Fixed problem with alignment in win.h. Added %Z specifier to printf function(s) for complex numbers Feb 4: Added BesselJ and BesselY to the special functions package distribution. Feb 2 Fixed problem in stdlib.h when compiling with -ansic. Fixed problem with complex numbers, when one argument of a binary operation is a constant. (Bad code was being generated). Added pow/sqrt and other functions as generic ones accepting complex numbers. Jan 18 Fixed problem in scanf when reading numbers longer than 105 digits. There were problems with some initialized tables, because of the changes needed to support C99. Fixed. Jan 16 Added sincos function to the standard library. Fixed typo in the intrinsics code generation Jan 6 Inlined the cosl function. Fixed oversight in stdlib.h where min and max was defined. Dec 30: Added stirling numbers (first and second kind) and the pochhammer symbol function to the special functions package. Dec 23: Added mempcpy, and memccpy to the standard library. Added the documentation for both. The conversion between unsigned long long and long double did not work properly for some test cases. Fixed. Dec 16: Added an important part of the C99 stdandard implementation: int fn(void) { int a[] = { 123,SomeFunction(),56}; } This is standard C99 and now it works. This needed quite a rewrite of the initialization routines, and may have introduced some problems elsewhere. I have tested it here as best as I could but you never know. Dec 15: The optimization of module for a constant integer provoked failure when the constant was bigger than 2GB. Fixed. Added function lambertw (lambert's W function) to the special functions library. Added function lerchphi to the special functions library. Dec 14: The optimization of division by a constant was provoking a compiler failure when the constant was too big. Fixed. When optimizing, the compiler would fail when having a long long constant as a switch variable. Fixed. Wen optimizing and a function was stripped of the stack frame, access to some arguments would be generated still as ebp was valid. Fixed. Dec 12: Assignment of a pointer to a bool did not work properly. Fixed. Dec 5: Fixed problem with the "overflow" checking. THis program would turn out a false positive: #include int main(void) { unsigned u; u = UINT_MAX / 2; u++; u = UINT_MAX; u++; return 0; } Unsigned numbers should not report overflow. Dec 3: The compiler would warn about unused arguments to printf only if there was more than 1 argument unused. Fixed, now it warns if there is only one unused argument. November 26 Added function mempcpy, as the gcc one. See the documentation for details. November 25 The expression register const unsigned long long n = 0x222LL; was making the compiler fail. Fixed. November 22 The expression L"This is a string" L" " was giving an error instead of returning a correct wide string. Fixed. The expression double *value; long long p; // ... *value = (long long)(*value * p + 0.5L) / (long double)p; was giving an error. Fixed. November 12 Fixed bug when shifting signed/unsigned characters. Added better constant folding when optimizing. The behavior of lcc-win when looking up the include files follows the same path as msvc or gcc: the current directory will be understood to be the directory where the current file is. November 10 Added option -dd to the compiler, that will print all the defines in the preprocessor with file and source line numbers. This allows to see where a define is being... defined. Added inline support for the "div" function. Added several missing header files from the current SDK. Some minor problems with the compiler: You can't declare the 'main' function as 'inline' for obvious reasons... This test was absent. Fixed. October 5 Fixed problem in the "Reformat option". Fixed problems when returning a structure from an inlined function when the size of the structure is less or equal than 8 bytes. Inlined the function div. See stdlib.h September 15 Added extension for using the same convention as C++ when invoking a function with unreferenced parameters. int fn(int a,int b,double) The third parameter contains just the type, not the name. This documents that is an unreferenced parameter. printf checking code provoked in certain circumstances wrong warnings. Fixed. Improved the handling of complex numbers July 25: This code would provoke a crash: int fn(int a) { int tab[a] = {1,2,3}; } Fixed. July 22 2007: Updates to browsegen that was crashing too often. July 09 2007: lcc-win32 accepts the standard syntax for complex numbers constants of 2.11+34*I; July 5: Added Polylog function+ documentation. June 23: Added atan2q (qfloat atan2) to the math library. Added expintn and expint June 16: Added beta_distribution_inv/beta_distribution_invq function. Added gamma_incomplete* missing functions. May 1: Big update with many bug fixes since February, in the compiler, the IDE, the resource editor, and the debugger. Feb 24: Added several functions to the special functions math library: Catalan, calculates the catalan numbers ibinomial and binomial, calculates binomial coefficients C(n,k) Fibonacci calculates the nth fibonacci number Fixed problem in code generation when converting from long double to long long. Fixed problem when converting from qfloat to long long. If you passed more than 1024 arguments to a function, the compiler would crash instead of writing an error message. Fixed. The error messages within an overloaded operator function would be wrong, displaying the "mangled" name instead of a clear text message. Fixed. Jan 10: Added the source code for the complex operators to the standard distribution. Dec 28: Bug in scanf fixed. When using operator overloading __func__ gabe the mangled function name. Now it will give the unmangled one. Updated the error handling of the string library. Nov 21: Added getline, getdelim, ggets fggets to the standard library. Added the specfuncs.h header file to math.h. Oct 15: Missing prototype for _hypot added to math.h Sep 26: The trigraphs feature will not be enabled by default. The compiler will always warn if trigraphs are detected in the source code. If the option -ansic is acyive, trigraphs will be translated but with a warning. Otherwise they are ignored. Sep 18: Updated sqlite3.dll and added -pedantic flag to the compiler Sep 12: Fixed problem with linking PolyRoots, due to an optimizer error. Fixed problems with intrinsic procedures that used long double arguments. Sep 5: Again, fixed the problems with bitfields in anonymous structures. I hope this time is the good one. Fixed problems in the file urlmon.h Aug 22: Fixed bug in conversion from floating point to unsigned long. The conversion was completely reritten, having becme a complex mix of assembly code impossible to maintain. Fixed bug with cast from int to _Bool in the context of a bitfield initialization. This two problems were pointed out by Fred J.Tydeman. Aug 20: Fixed problem with Strchr and Strrchr in the containers.lib. July 28: The atoq function was missing The compiler would still recognize "qfloat" as a defined type even when invoked with the -ansic flag. Fixed. July 25: browsegen.exe was not writing correct sqlite3 database files. The problem seems to be in the quoting of integer arguments. Adding a single quote to the INSERT INTO sql statements solved this problem. July 16: Added PolyRoots, a subroutine that uses the Jenkins-Traub method for finding the zeroes of a polynomial. July 15: When reading a table of qfloats the compiler would trap if any of the members of the array was not a qfloat. Fixed. The debugger displayed wrongly long double data. Fixed. July 12: Added _stati64 and fixed problem in sys\stat.h. _stati64 was written by Friedrich. July 11: Added strtok_r (POSIX standard), a reentrant version of strtok. July 5: Added Strfromp and several other overloaded functions to the string library. Finished the first part of the Safer C library as proposed by Microsoft. Added the function strfmon for the formatting of monetary values. Jun 20: Added edit_distance to the distribution. See announcement in the lcc newsgroup. Jun 15 The program #include struct { struct { unsigned a : 1; unsigned b : 1; unsigned:12; }; } t; int main () { t.a = 0; t.b = 1; printf ("%d %d\n", t.a, t.b); return 0; } produced 1 1 instead of 0 1 as it should. This has been fixed. This problem appeared only with nested structures. Several prototypes were missing from wchar.h May 26: Added hypergeom1f1 to the math library. May 25: Added more warnings to the printf checker when using the -A option (all warnings). Added the wide character printf functions. May 24: Added an option for Strchr to take a starting index. Added an option for Strdup to take a starting and ending index, to make the same thing as the famous mid$ of Basic... Updated the documentation and the proposal to the standardization comitee (see ftp://ftp.cs.virginia.edu/pub/lcc-win32/proposal.pdf ). May 19: The wmemchr function was missing. Fixed. The Strchr and Strrchr functions in the string library were quite slow. Fixed. May 11: The function isblank was missing from the standard library. Fixed. Strtrim added to the string library. May 06: Updated browsegen.exe, it was crashing. Updated the string library. General cleanup and stricter implementation of the Str prefix for most functions. Apr 18: calloc would not check for overflow, returning a wrong result when the multiplication of element size times number of elements overflowed. That function was in CRTDLL.DLL, so I rewrote it. Added rintl that was missing Added strtof that was missing Added isnanf, feupdateenv, copysignf that were missing. Bugs reported by Fred J. Tydeman. Mar 19: Fixed problem with the keyword "inline". Arranged the documentation for the list container. It is still not finished however. Fixed problem in the debugger when the size of a structure was bigger than 64K. Feb 26: Added small window to the IDE when you press the scrollbar button. It will show the line number and the current function. When you down-scroll in a long file it may be useful to know where exactly (in which function) you are. Fixed some missing defines in win.h specifically those HEAP_CREATE_* constants. Incorporated a fix to the preprocessor proposed by Nelson Beebe. Jan 29: Added function countbits to the bitstring interface. It returns the number of 1 bits in an integer. Jan 27: Missing lfc.h lfc_impl.h added. Jan 24: People complain the the -ansic option disables __declspec and _stdcall, making windows programming impossible. I have changed this, and now ansic will accept those keywords. The evaluate expression dialog box would not use the carriage return key Fixed. Besides sometimes garbage was printed after the result of an evaluation. Fixed too. Jan 16: Added exp10 function. Check of many mathematical functions. Fixed errors in yn scalbn jn. Added scalb function. Jan 14: Fixed isnan() function, was giving wrong results. Added ipow ipowl and ipowf functions. Jan 13: Dynamic arrays are NOT allowed at the global level. For instance this code should NOT compile: int n=7; int tab[n]; BUT this code WILL compile: const int n=7; int tab[n]; Note the "const". The new version of the resource editor (the full version) is now included in the standard distribution. Some problems with the standard heders using the -ansic option of the compiler have been corrected. Revised the keyboard accelerators in the menus. Dec 20: Revised all standard header files for compatibility with -ansic option. Dec 12: Inline functions with variable number of arguments are not supported. The compiler will issue a warning now, instead of crashing ... Dec 6: Fixed problem with printf A format for double precision. Reduced the size of printf by 600 bytes. Dec 2: Added the function double frand(void) to the standard library. It returns a floating point number between 0 and 1. Nov 27: A problem in code generation fixed. Thanks to Danielle for pointing me to this problem. The problem was with the rule: reg: LOADI(CVDI(CVID(mem))) "\tmovl\t%0,%c\n" This provoked a crash in the function prune, in gen.c Nov 22: Added new cryptography section to netutils.lib. The functions there are: Sha1FromFile (computes digest) Sha1FromBuffer (computes digest) FileEncrypt (encrypts and decrypts a file) This is my second attempt to this, I hope this provides useful. The documentation has been updated, see "Cryptography" in the standard library documentation. Nov 16: Fixed problem under windows 95 Nov 15: Yesterday some changes did not make it: o When optimizations are ON and you call an intrinsic function that requires a double argument with an actual integer argument (sin(1) for example) bad code would be generated. Fixed. o The binary editor was not working due to accidentally erasing the dialog box that it uses. Fixed. Nov 14: Big update for wedit. There are many changes and bug fixes, and (hopefully) we did not add any new bugs... o We have cleaned up wedit from many unneeded stuff and options that nobody used. The versioning system is gone, for instance. We never received any feedback for it, not even a bug report so we assumed that it wasn't being used. o Gone too is the Fortran and Eiffel support. Wedit is just an IDE for the C language o The smooth scrolling option is gone too. Machines are now so fast, that the option wasn't working anyway. o The project directory is now no longer in \lcc\lib but in a per user basis, normally in My Documents\lcc. This allows Wedit to be used by several users in a single machine. o An uninitialized buffer usage was corrected in goto definition option and probably fixes several mysterious crashes. o The compiler has not been forgotten either. The evaluation of default arguments is completely rewritten, and can handle any type of initilization expression. o Several fixes were added to the header files, and some bugs in tgmath.h eliminated. o The debugger was unable to follow function pointers that were at an offset in a structure bigger than 128 bytes. Fixed. Oct 21: If there is a cast operator defined and a function call needs a cast operation to satisfy the prototype, now the compiler will automatically call the defined cast operator for this argument. Corrected some typos in the prototypes of stats.h Oct 18: Added regexp.lib to the standard libc.lib. Corrected crash in wedit when looking for a symbol definition. Oct 9: Added jv, airy, and struve special functions to the library, and the corresponding documentation. Added in double precision and in qfloat. Oct 7: Fixed trap in 128 bit integer modulo operation. Several updates to the documentation. Oct 4: Added Knuth's floating point comparison algorithm "fcmp" to the standard math library. Added prototype in math.h and added the documentation page Oct 3: Updated the source distribution of the container library. Location: \lcc\src\stringlib. Just type "make" to build it. Oct 3: Corrected problem in optimizer: The constant -1 (or EOF) would not be recognized in a switch statement (if it was one of the cases of the switch). Fixed. Sep 29: Corrected bug in wedit: when opening a new project with the option "keep current project open", wedit would just open a new empty window. Sep 17: A lot of changes in th 128 bit integers library. Started the documentation. An annoying bug in "Usage of" a variable is corrected in wedit. Sep 15: Problem in inline function expansion solved. This would appear when several return statements were present in a function. Aug 27: int and long, or unsigned int and unsigned long are equivalent types under 32 bits lcc. This wasn't being acknowledged in the operator overloading part. Fixed. Aug 16: The more detailed error reporting for function pointer assignment could lead in some cases to the compiler trapping. Fixed. The != operator was not working when qfloats were used in a conditional context. Fixed. Aug 15: 128 bit integers are now possible. To use them #include . The library is i128.lib. In operator overloading, the compiler will now assume that if an operator like == is defined, it is not necessary to define operator!= since it is assumed that operator!= is equal to !operator==. The same with < and >=, and <= and >. Aug 14: The & (and) operator would not be recognized with operator overloading. Fixed. The atof function receives a const char * and NOT a char *. Changed stdlib.h and math.h. The trap handler was making an infinite loop. Fixed. Jul 26 Given long long ll; the expression while (ll--) would not be compiled correctly. Fixed. When the main() function was declared as void, the compiler would emit an incomprehensible message. Fixed. Jun 08 Improved error reporting for assignments of function pointers. The compiler would never protest when assigning function pointers to completely different function types. Fixed. Fixed several problems with the "overloaded" and the "operator" keywords. Jun 06 Added the array list (flexible arrays) to the distribution. This replaces the vector container library. Updated the documentation Jun 04 Updated the distribution with the string collection library. Documentation updated. Tutorial updated with the new entry. Source code added to the distribution. Updated netapi32.lib and lmcons.h Apr 23: pcre.dll was missing. Fixed. Apr 13: The debugger user interface has been updated. Specifically, it is now possible just to click in a substructure or union and have it expanded showing the sub-items it may have. The watch window in the debugger has changed, and now you have a menu where you can choose to add or delete a new watch. The work of Friedrich Dominicus in the resource editor has been added to the distribution. Specifically, the Add icon dialog should work as expected, and many other problems have been solved. The header files have been updated to reflect several constants and structures that were missing, specially in the common controls. Apr 5: When writing: strchr(name,'.'); Wedit would crash when trying to find a structure member (the point was being interpreted too hastily). Fixed. Apr 4: The macros isgreater, isless, etc in math.h did not work correctly. Replaced them by intrinsic functions. Apr 1: Fixed problem in Wedit: when a recursive grep was started, if a directory chdir was failing, it would crash with stack overflow. Fixed startup code problem in the handling of traps. Added fixes proposed by F. Fritsche for limits.h and stdio.h fscanf would not recognize numbers like -10 if scanning using the %x format. Fixed. Mar 23: Several scanf problems solved. Mar 13: Fixed problem in shobjidl.h Mar 12: Corrected problem when casting from a double to an unsigned char. File types.h was impossible to include twice. It was missing the #ifndef __types_h #define __types_h ... #endif. Fixed. Fixed problem with reformatting and an unfinished string/comment. Mar 10: Wedit entered in an infinite loop when looking in a source file with an unfinished, multi-line comment. Fixed. Mar 5: Browsegen was entering in an infinite loop when a "const" qualifier was in a typedef definition. Fixed. The initial value of the background color of the search window was set to black, so if you open wedit without opening a project or opening a file, the search window would write black over black, not very good... Fixed. Mar 2: Fixed problems with printf when confronted with -inf Arranged double definitions between richedit.h and win.h Feb 26: Fixed several redefinitions in win.h, uncovered by the bug fix below. When making page down until end of file, Wedit would crash sometimes Fixed. Feb 25: The compiler would accept a redefinition of a structure/union. Fixed. Feb 24: Due to a problem in the editor, the 64 bit shifts weren't working correctly. Fixed. Feb 23: Added more consistent support for traps concerning integer division by zero. Specifically, now a SIGFPE will be generated, not SIGSEGV. Changed the startup code and the default trap handler. Feb 16: Fixed trap in the compiler when parsing complex numbers. Feb 15: OutputDebugString would always stop the debugger. This can be annoying, so it is now changed to adding a line in the outut messages window of the debugger. There was a problem in the optimizer when looking for the flags register. This optimization scanned backwards to see if a compare instruction could be eliminated by using some previous operation that sets the flags already (add, and, etc). This optimization would fail to notice a change in the contents of the register being sought. Corrected. Feb 6: Corrected some problems in the implementation of scanf. Added a sound, if the build has errors in it. This can be turned on in Wedit's config->Workspace tab. Updated documentation for several missing string functions Jan 18: Fixed problem with scanf when reading a group character. Jan 11: Fixed problem when parsing long long constants with the i64 suffix. Jan 4: A serious problem in the optimizer: When a function was stripped from the stack frame, some generated code still used the frame pointer even if there wasn't any. Fixd. Jan 2: Added two functions to the C library: memshort/memint, that will search in a table a specified number. Updated the documentation. A typo in qfloat.h fixed. Dec 10: Fixed problem with writing of prototypes. Dec 4: Wedit would choke if there was somewhere in the source the #ifdef __cplusplus extern "C" { #endif since the bracket counter got confused. Fixed. Added some missing defines to qfloat.h. Nov 24: Added a tutorial to the sqlite documentation. Nov 21: Improved the structure fields display. Now it will automatically disappear if you write a field completely. Besides, I added an edit field to allow you to see what you type. The prototypes tooltip wasn't working for system functions. Fixed. The functionality to add a keyword to the keyword list wasn't working. (Project->Configuration->Languages). Fixed. Nov 15: Wedit changed completely the format of the browse information. It now uses the sqlite interface to build an sql databse. This may cause problems. Please report any "suspicious" behavior. Fixed problems with conversions from unsigned character to doubles. Fixed problem with inline __declspec(naked) functions. Tried to fix the problems in vfw.h, and vfw32.lib Fixed problem with the ping function (netutils.lib): it would hang if the machine at the other side didn't answer Nov 10: Fixed recentering bug in Wedit: Now recentering is done only when pasting at EOF. Not in other situations. Added configuration option to save the file without tabs. Fixed problem in compiler with instruction CVIL (convert int to long long). In some situations a register would get lost. Nov 6: Fixed glitch in long double to long long conversion. Oct 27: Updated commctrl.h, dbghelp.h. Many definitions added. Added include file windns.h, bluetoothapis.h Oct 26: Added more than 300 missing definitions from winbase.h to win.h. An automatic program checks now for missing definitions. Oct 24: Fixed problem with reformating lines with // comments in wedit. Fixed problem with cut/paste in wedit When inserting text, the cursor was sometimes set in a blank page due to a missing recentering of the inserted text. Fixed. printf would not honor the space qualifier for floating point %g format. Fixed. Oct 22: Fixed problem in printf (%.0d" would print something when given a zero, what is not mandated by the standard. Fixed some problems in Wedit with the menus. Oct 9: If the last line of a file was //\ wedit would crash. Fixed. Oct 4: The resource compiler accepted the MANIFEST keyword and not the RT_MANIFEST, as it appears sometimes in the documentation. Fixed, it now accepts both. Oct 1: Some updates to the lcclibc.dll library and a bug fix for scanf. Sep 26: Problem with the fabs function, a typo would provoke a crash. Fixed. Sep 25: Update of the dynamic library lcclibc.dll. Many new functions are replacing the CRTDLL counterparts, with the objective of having a stand-alone C99 library for lcc-win32 and replace definitively crtdll.dll. I hope this doesn't introduce new problems. A bug in the linker was fixed. When in the exports definition file (.def) you named a function that did not exist, the linker would search for a function with a similar name but starting with an underscore, so "cos" would become "_cos". The problem was that the windows loader expects the functions in *alphabetical* order, and the underscore prevented other functions from being found at run time. This would provoke an incomprehesible messge: The entry point xxx can't be found Pedump showed the entry point in the dll, so the whole was a complete mistery. Finally I got it and got rid of this bug. Unsigned long long multiplications weren't done at compile time. Fixed. Sep 17: Browsegen.exe would provoke a trap during the installation. Fixed. Sep 16: Bugfixes in printf and scanf: scanf did not recognize 0x prefix in base 16, and printf had a non-zero terminated string in its fixed tables. Sep 9: Added Strencrypt and Strdecrypt to the string library of lcc-win32. Sep 5: Big update: Linear algebra section with a big package for matrices solving linear systems, etc. New intrinsic function "typeof", that returns the type of its argument. Problem with the resource compiler fixed: When a resource file was imported from another directory the file would be opened in text mode and not in binary mode. Fixed. Fixed problems with browsegen information generation. Aug 30: Improved error reporting for missing prototypes. Aug 29: The grep utility in wedit would fail when given a root directory like: c:\. Fixed. Wedit would start displaying structure fields even when the cursor was in a comment. Fixed. Aug 26: Added the -C option to the preprocessor. This will keep comments in the preprocessed output Aug 23: Corected problem when the intrinsic function cos received a float argument as the result of a function call. Added following functions to the statistics library: median, geometric_mean arithmetic_mean harmonic_mean variance variance_mle standard_deviation_mle central_moment percentile skewness kurtosis rms (root mean square) standard_deviation. Documentation updated Aug 21: Added function crc32 (calculates the crc) to the netutils library. Aug 19: Fixed problem with the preprocessor: #if (2 - 1 - 1 != 0) would not evaluate correctly. Fixed problem with the cbrt function. Aug 15: Still some problems with generic functions: unsigned int was missing when promoting arguments for generic functions. Aug 5 strtoimax strtoumax strtoull: those functions were missing, and they are specified in C99. Fixed. Aug 4: The compiler now accepts standard C99 hexadecimal floats, for instance 0x100.0p-4 --> 16.0. This is one of the missing parts of C99 that is now implemented at last. xprintf did not handle well subnormal numbers. Now it does, using internally the qfloat library. Aug 3: Corrections in the simplification module. Conevrsions of unsigned long long were sometimes not simplified. Fixed. frexpl(infinity) would return a wrong value. Fixed. Aug 2: The signbit function was missing a pop of the floating point stack. Fixed. The distribution was missing random.h (mersenne twister include file). Added. July 30: The conversion of double to unsigned short had a problem. Fixed. Thanks to Mr Tydeman for writing a test program that uncovered this (flt2int.c) July 29: The frexp function produced incorrect results. Bug reported by Fred Tydeman, fixed together with other problems he discovered. The mdimain.tpl template in \lcc\lib\wizard contained an error. Fixed. (bug reported by Winny Mathew Kurian). The C standard changed slightly the signature of the following functions: feclearexcept fegetexceptflag feraiseexcept fesetexceptflag fegetenv fesetenv feupdateenv Those functions were of void return type, and now they have an integer return type. This correction was suggested by Mr Tydeman. The function fehold except was missing from the library. Fixed, and documentation updated. July 24: The generic function fabs would not work when the argument was an integer and the optimization flag was ON. Fixed. July 23: Added the Mersenne Twister random number generator to the statistics section. Updated the documentation. July 22: Finished the statistics package. Documentation and test program OK. July 21: More statistical functions added. Documentation updated for those July 20: New statistical functions library started. See the "Statistics" tag in the documentation July 14: The inline keyword wasn't recognized for overloaded operators. Fixed. An unused label generated no warnings. Fixed. This will show only if the -A option is in effect. An incorrectly paired #ifndef/#endif was making trouble in stdio.h Fixed. July 10: The macro isnormal wasn't implemented. Defined as a generic function. July 9: New compiler option -overflowcheck that will make the compiler emit code for testing overflow at each addition, subtraction and multiplication. If an overflow is detected a user function called _overflow(char *function_name,int line); is called. A default implementation of that function is now supplied with the run time library. scanf had a problem with octal digits. Fixed. strtod had a problem with the "p" format. Fixed. The function fabs when in optimized setting would provoke an assembler error. Fixed. The founds lround and llround were missing. July 6: strtold would not update correctly the passed pointer to the end of the string for certain inputs like 0e-19. July 4: When you had an include in the form: #include "c:\some path\dir\projects\foo.h" and in "foo.h" you had #include "foo1.h" the compiler would not find "c:\some path\dir\projects\foo1.h" even if it was there. Fixed. Thios bug was reported before but a faulty test led me to believe it didn't exist. Added documentation for regular expressions package that was missing. July 1: When an identifier is a structure, now Wedit will automatically display the fields of the structure. This meant a lot of work, updating the debug information format etc. June 27: Intrinsic functions like sin/cos would not longer be recognized as such after the change in the tymath.h headers. Fixed. Added fabs as intrinsic function too. Modified qfloat.h to use the generic function names. June 26: Updated completely tgmath.h and math.h to make them more confoming to the C99 standard. June 24: Small additions to win.h. Still problems with multimdimensional dynamic arrays. Fixed. June 23: Added functions wtof wcscmp and others to the standard library. The startup establishes now a try/except frame. The debugger is modified to arrange with this. June 19: Fixed problem with subtraction of two global addresses. The code generated was wrong when both addresses were constants. The function strncat was missing from the standard library, even if it was present in the documentation. Fixed. The compiler would generate wrong code for dynamically allocated arrays of more than one dimension. Fixed. June 16: Fixed problem in the code generator. When Optimization is ON, and a structure with size smaller than 4 bytes is passed by value to a function in an assignment context, bad code was generated. For instance: struct f { char a,b}; struct f Data, a; void somefn(struct f); somefn(a = Data); Fixed. Fixed some problems with the famous __VA_ARGS__ macro expansion. June 15: The strtoll function was giving incorrect results when the base was set to zero. Fixed. June 13: More corrections to the long long module. Wedit configuration linker would not store the double quotes if the executable contains spaces. Fixed. June 12: Fixed buffer overflow when generating the debug information when an enumeration had a lot of names (more than 16K of storage) The fixed buffer was replaced by a dynamic schema. Who would have thought about an enump bigger than 16K? Problem with code generation for unsigned long longs within a conditional context solved. June 7: The expression: double t,d; t *=v--; would miss the decrement. Fixed. The expression: unsigned long long res = ULLONG_MAX/2; would produce a wrong result (zero) because of a typo in the simplification module. Fixed. June 1: Updated wedit to avoid crashes in the F1 help feature. May 29: New chapter added to the tutorial: Network programming. It explains the newly added netutils.lib and a bit network programming in general. Added netutils.h and netutils.lib to the standard distribution. May 28: Added time64, ctime64, difftime64, mktime64 to the standard library. The result is a 64 bit value with the same meaning than the 32 bit counterpart. May 27: There was a problem with the optimizer and long doubles. A "Not enough registers" report would be issued when it wasn't at all the case. Fixed. May 26: Reorganized the browse informatin to better handle the types of the variables. Now the "auto-completion" (using ESC) should work better. Changed the error message "undefined reference to _WinMain@16" in the linker to the clearer "entry point ("main" function) undefined". This will hopefully avoid qustions... The display locals command 'right click menu) was provoking a trap. Fixed. The operator keyword was getting recognized within structure definitions. For instance: struct foo { ingt operator; } produced a wrong series of syntax errors. Fixed. No extensions (overloaded/operator) are recognized within structure declarations) May 23: Buildguid was failing in some machines due to a memory leak. Fixed. May 20: Problem with lcclnk and the new findfiles function solved. Problem with browsegen crashing solved. May 17: New functions added to the standard library: GetHttpURL (retrieves an URL) and GetFtpURL (retrieves a file with FTP). Another new function is "ping" that will return 1 if the host is alive, zero otehrwise. Documentation updated. May 16: New function added to the standard library: findfiles(). Documentation updated. May 10: Updated iphlpapi.lib. Icmp.lib is no longer distributed since its contents have been included in iphlpapi.lib Updated ws2_32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib and comctl32.lib May 7: Updated the network header files iphlpapi.h iprtrmib.h iptypes.h ipexport.h Arrays within structures weren't correctly displayed by the debugger. Fixed. May 4: Fixed small eror in strtrim. Would not delete the last blank. Fixed problems in the memory window in Wedit. Changed Strvalid from bool to int. May 1: Corrected error in the linker when generating the line number information. The linker used the root directory for temporary files. This would not work if you did not have write access into that directory. It uses now the current directory. Changed the exception handling in the string library. April 25: Added the incomplete gamma function to the math library in long double and qfloat precision. Updated the documentation. April 21: Fixed several problems with the undo feature. Backspaces weren't correctly handled. The delete key had problems with the undo too. Fixed. April 19: Still problems with variable args macros. Hopefully fixed now. April 14: The old string library was removed from the distribution. This provoked some errors when building the libraries. Fixed. April 7: The Perl regular expressions package has been added to the standard distribution. The documentation has been updated to document the package. See "Perl regular expressions" in the standard library documentation. April 1: Added function Strenv that gets an environment variable and returns a String. Changed the name of the string library include file from strings.h to str.h to avoid name clashes with POSIX. Mars 30 C99 specifies a default return value for main. This wasn't implemented. The program: int main(void) { /* ... */ } will return zero. Fixed problem with the __VA_ARGS__ macro expansion Added function Strfrompipe() to the Strings library. It will start a command aand gather its output into a String. Mars 24 Fixed problem with browsegen crashing too often... :-( Fixed problem with accelerator keys in the "new project" dialog of wedit. Fixed problem with isgreater and isless, etc, in math.h: An obsolete assembler instruction was used. Fixed a problem with a compiler trap when compiling any of the above functions. The format %ls (print a wide character string) wasn't working. Fixed. The same for %S. Mars 22 The unary operator '*' couldn't be overloaded. Now it can. This is the pointer dereference operator, for instance when you write *p. The result of this operator MUST be a pointer. An example of this in the string package: char *operator *(String s); This operator returns a pointer to the start of the string and allows accessing strings with the *string syntax. The pointer returned by the operator will be immediately dereferenced by the compiler. Mars 21 When a reference argument was passed to a function, the optimizer still performed constant folding, so any result was lost. Fixed. Example: void func(int &r) { r = 1; } int main(void) { int a = 0; func(a); // here the optimizer CAN't substitute a with zero since fn // could have changed it. } Mars 20. Updated pedump to show all the imported dlls of the executable More updates of the string library. win.h updated with missing definitions. Mars 17. More updates to the string library and documentation. Mars 16 There was an error when calculating the offsets of local variables, when using structured exception handling. That would lead to some saved registers being destroyed. Fixed. Further testing of the string library. Documentation updated. Mars 15 New function getopt added to the standard library. The function signbit left the floating point stack unbalanced. This leads to a crash after at most 8 times you used it. Fixed. Mars 14 The reformatter of the IDE would fail with #defines that spanned more than a line, using \ to continuate the line. Fixed. Added functions strtobase64 strfrombase64, that I took from the str library built by John Finlay. Mars 11 Fixed problem when in a switch statement a declaration apeeared immediately after the case keyword: switch(a) { case 1: int tab[2]; ... } Mars 9 Fixed a problem when casting from double complex to double. Added wcsrepl, that mimics strrepl in the standard library. Rewrote the Strings package to use two versions of each function: one for double byte chars, another for single byte. Both versions are provided and the usual construct #ifdef UNICODE #define Strcpy StrcpyW #else #define Strcpy StrcpyA #endif The documentation of the containers package has been reworked again. Mars 8 Due to a memory allocation error the finding of missing functions in the IDE within the dll list was crashing. Fixed. Control-z works now for the Undo feature. Mars 7 Added library function wcsrepl. Identical to strrepl but with wchar_t strings. Updated documentation. Most of the work now is done updating the container library. Several functions were added to the string package. Mars 4 Vector container added. New documentation available. Mars 3 Fixed problem with expressions like: int a = 10000*(1000*fn()) that made the compiler crash. The container lib is now better (at least I hope :-), and the documentation has been updated. The file dlls.txt used by the buildapi utility was missing several dlls. Fixed. Thanks to Tom Speirs for pointing me to this problem. Feb 28 When a typedef was redefined, the compiler would break if it was followed by a ",". For instance: typedef unsigned short UINT16,*PUINT16; typedef unsigend short UINT16; // This would work typedef unsigned short UINT16,*PUINT16; // but this would not. Fixed. A function returning a pointer to a long long integer that was immediately dereferenced provoked a trap. For example: long long *fn(void); long long a = *fn(); Fixed. Feb 26 When two __try { } blocks appeared in the same function the compiler would emit bad code, i.e. the second try block ended in the first try block exception clause. Fixed. Feb 25: Fixed problem when doing a page up in Wedit that provoked a crash. When the document was smaller than a full page, the column position wasn't getting updated when doing a page up and the editor crashed. It is the first time that I touch a so basic portion of Wedit since at least 4 years. Congratulations to "bat" that pointed me to this bug. Feb 23: Missing library function atani fixed. Feb 21: First release of the container library. Implemented are lists and stacks. The documentation has been updated with this library. The construct void * operator[](...) would not work. Fixed. Feb 13: The statement int & operator[](...); wasn't recognized correctly. Fixed. The statement: _Bool b; if (b=getchar()) would provoke a compiler error. Fixed. uintptr_t was missing from stdint.h. Feb 5: When using operator overloading with arrays, a cast was missing when the type of the actual array element wasn't the one the operator overloading function expected. Fixed. Feb 4: Yet another problem with the hh modifier solved. The distinction between signed (sign extension should be performed) and unsigned (higher bits should be masked) wasn't getting done. Fixed. Fix for DWORDLONG in win.h. The stack display in the debugger has been improved. Jan 30 The breakpoint icon was missing/ Fixed. Missing definitions in win.h (OSVERSIONINFOEX) were added. Thanks to Simon for pointing me to this problem. Jan 29: Fixed problem with the hh modifier for xprintf Fixed problem when taking the difference of two function addresses in the assembler. Added the instruction cvttsd2si for converting data from floating point to integer instead of a function call to ftol. This is much faster but will work only with the p6 flag since older machines do not have this instruction (needs SSE2). Jan 28: Fixed problem when p6 flag (pentium 6 instructions) is active. The compiler would generate wrong code for some floating point comparisons Jan 27: Minor fixes to library functions (ldexp rewritten in assembler) and to some assembler errors. Jan 26: Fixed code generation problem when optimizing. Added include file wspiapi.h (for IPV6 network programming) Jan 10: Fixed problem of C keywords not appearing. 2003 Dec 23: The change in warning level for signed/usigned(see below) provokes too much noise. I eliminated all warnings for comparisons of unsigned with a positive constant or zero. Several problems with browsegen were fixed. Wedit received several fixes too, specially the built-in parser (go to definition feature). The ceil() function wa giving wrong results. Fixed. Dec 22: Changed the warning level of signed/unsigned comparison from -A -A to just -A. Dec 20: Added cfg.h cfgmgr32.h and devguid.h to the header files. Updated setupapi.lib. This version contains a NEW assembler. Please report any problems that may appear as soon as possible. Updated compiler correcting problem in code generation: the rule reg: INDIRI(ADDRLP(b))) ADDI(INDIRI(frameoffset),INDIRI(frameoffset)) This rule is valid only if the expression is not assigned to a common sub-expression intermediate value. If you feed it a common subexpression like a+b in the expression if((a + b > 0) && (a + b < c + 1 )) this leads to bad code generation since the register is freed prematurely. The compiler now recognizes I64 and UI64 as suffixes equivalent to LL and ULL to remain compatible with Microsoft notation. No warnings were given when a long long constant overflowed. Fixed. Nov 26: Fixed problem of stack adjustment when overloaded functions received an argument that needs a cast to a different size. Thanks to MrBCX for this. Updated version of wedit will close dexplore.exe when finished. Nov 23 Fixed several problems with code generation: Subtraction of two functions addresses did not work. Fixed. Fixed problem when optimizing division in the peephole optimizer. Added many missing definitions to the header files, specially windows.h. Nov 11: Fixed problem with register allocation. Thanks to the BCX people for reporting this problem. Fixed problem with overloaded functions when optimizing: Instead of a block copy to push a structure by value in the stack, I used just a push instruction for structures with size smaller equal than 4 bytes. This was not working with overloaded functions. Oct 26: Fixed problem with variable length arrays. When the index variable was not of type integer but short or char bad code was emitted. Oct 13: Fixed problem with atan function. When given atan(1), the compiler failed to promote the integer 1 to double and complained about ambiguous call to atan. The restricted keyword wasn't being handled correctly in some cases. Fixed. xscanf was crashing when the '*' format (ignore arg) was given. Fixed. Oct 10: Fixed wrong offset calculation for anonymous structures within anonymous unions. Thanks to John for reporting this bug. Added functions remainder/remainderl/remainderf, trunc/truncl/truncf Updated the documentation of the math library. Added inline __declspec(naked) for defining inlined functions written entirely in assembly, and used this feature to implement the macros isgreater, isgreaterequal, and the other unordered floating point comparisons as mandated by C99. Fixed problem of spurious warning when using the %S format in printf. Fixed problem with offsetof macro. Oct 6: Fixed problem when taking the address of atan function. Fixed the problem of powl returning a wrong result by mistakingly assuming overflow. Fixed problem with infinities in powq (qfloat) function. Fixed problem in the IDE when a cast to an immediate structure was used. The IDE assumed that no braces can occur when the level of parentheses is greater than zero. Wehn you use foo(&(struct m){"abc",10}); this rule is no longer valid. Since this feature was recently added to the compiler, the IDE issued a wrong message. Oct 1: Fixed problems in xscanf and xprintf. Now xscanf can input qfloats, and long doubles. Changed all representations of complex numbers to a single representation unsing long doubles. This simplifies the code, the libraries and the compiler itself. Sep 30: Fixed problem in strtrim. A wrong file was included in the makefile of libc.lib, what implied that a wrong libc.lib was built. Sep 29: Added following functions to libc.lib: cabs, csqrt, cpow, cproj, csin, ctan, ccos, catan casin cacos, ctanh catanh, csinh, casinh, ccosh, cacosh, clog, y0, y1, j0, j1, yn, jn. All of them in qfloat/long double/double/ precision. Sep 24: Complex numbers have been given a rework. Many automatic casts from float complex to long double complex for instance weren't working properly. The complex functions were moved from math.lib to the standard libc.lib to avoid having to link another extra library when using complex numbers. The cast of immediate structures (C99) now is working. You can write: (struct customer){"John",25} This is useful for passing immediate structures as arguments to functions, for instance. When generating complex long double constant like 2.3L+8.9Li the alignment of doubles in a 16 byte boundary wasn't respected, since the compiler failed to emit a 32 bit zero after emitting the first long double constant. Fixed. A faulty rule would provoke crashes when an addition to a base+offset form was being done. Complex math functions cabs, csin added with qfloat/long double/double versions. Sep 16: Missing declaration for the constant INFINITY in math.h. Fixed. Sep 12-14: The #pragma lib implementation had a serious bug. When linking several files that all contained an automatic reference to a library, the library would be added after that file was added. Since lcclnk is a one pass linker, the library would not be seen by the object files later on. For instance if we had: lcclnk a.obj b.obj If a.obj and b.obj included (automatically with #pragma lib) "foo.lib" the command line the linker would see was: lcclnk a.obj foo.lib b.obj Now, if b.obj contained references to "foo.lib", that library contents would not be seen by the linker what provoked incomprehesible errors... Fixed. Fixed overflow problem in powl function. Improved qfloat standard functions by reducing the copying of qfloat numbers, each 14*sizeof(int) bytes... Added functions ceilq ceill ceilf fdimq scalbnl scalbnf scalbnq log10q The floating constant 0q (zero qfloat) wasn't being recognized. Fixed. Added option -o to the compiler to keep it more compatible with gcc. Sep 10: Added functions to the standard c library. cbrtl cbrt gamma lgamma erf expm1 atanl tanl isinl log1p and many other qfloat equivalents of the standard library. The pow function was tested for correct behavior with NANs and infinities The initialization -10q was not yielding a negative qfloat but a positive one. Fixed. Tables of qfloats now work as they should. Sep 9: When an overloaded function like int overloaded fn(long double); was called with arguments: fn(5.9); The correct function was selected, but the call was done without generating the cast to the actual expected type! This means that many overloaded math functions failed when called with slightly different argument types. Fixed. The function hypot() was implemented in a trivial way. A better implementation was found in the code of free BSD. I adapted it, and added it to libc.lib. The power function was not taking into account the results specified for infinite, NAN or negative arguments. This has been fixed. Still, lcc-win32 does not support negative zeroes. Sep 6: Added coshl sinhl tanhl to the standard library. Added coshq sinhq and tanhq (qfloat versions) to qfloat.dll Sep 5: Fixed problems with sinhl and asinhl in the math library. Those functions are part of the standard library, so they were moved from math.lib to libc.lib, and now will be included automatically in any link process. Fixed problem with exp(2) being calculated incorrectly. Fixed missing WM_ definitions in win.h. Thanks Mike. Added windows system files rassapi.h adsiid.h and adtgen.h. The operators << and >> weren't being recognized. Fixed. The assembler was confusing fistpl and fistps..., thanks to John for pointing me to that error. Aug 31: Added math library function log1p. Aug 30: In an expresion (1) ? (double expression) : (long double expression) the resulting type would be long double and not double, even if the controlling expression was a positive constant. This made all those macros in math.h: if (sizeof(a) <=8) ? sqrtd(a) : sqrtl(a) FAIL, what a bug... This was visible only when you specified the -ansic flag, that is why I did not see it. Problem with qfloats and cast operators fixed. The expressions unsigned int a = (unsigned int) qfloat; would not work even if there was an operator int operator()(qfloat); defined. Besides, if the operator took a reference like in: int operator()(qfloat &); the reference was not being respected and this provoked a crash. Fixed trap when casting to long in some special conditions. Fixed several missing definitions in win.h Fixed the problem of redefinitions in win.h Fixed problem in oaidl.h: a macro was defined several times. Added warnings when there is an overflow when converting long double to long long and many other conversions that provoked an overflow without any warning message. This is in the context of constant expressions only. Aug 28: Extra semicolon in math.h line 90 results in surious syntax errors. Fixed. Aug 27: The format in printf "%lf" should ignore the 'l' qualifier. It wasn't, and mistook that for a long long (qualifer 'L'). Fixed. The standard accepts multiple type qualifiers in a declaration like: int const const const a; This wasn't recognized by the compiler. Fixed. The restricted keyword is now fully recognized and error checking is done. Added #pragma lib to bignums.h Added the corrections that Mike Caetano proposed for win.h. Thanks Mike. Aug 26: Added intrinsics sin() and cos() to math.h. Now no function call will be generated for those functions but just a single fsin/fcos instruction. At the same time this greatly simplify the type generic math since now sin() and cos() will work for float to long double. Added VARIANT_TRUE/VARIANT_FALSE to win.h, that were missing. Fixed problem in xprintf when a long double value greater than DBL_MAX was passed: xprintf would print "inf" even if the number was a perfectly correct long double number. Improved constant folding in assignments. More constants are now followed. Fixed problem with rule CVUS(CVSU(reg)) in the win32.md file. This provoked that Comeau C++ would not compile its own library. Added improved register assignments. The overall speed is increased, I hope without too much pain in future problems. Please report any inconsistencies you may discover. Added simplification of (CON1*a) / (CON2*b) --> (CON1/CON2)*(a/b). The constant division will be made at compile time. Multiplies by 1.0 generate no code. When optimizing away a division by 2, a spurious move was still generated. Fixed. Aug 15: Added mount and umount utilities to the tutorial examples. Corrected win.h to include the correct prototypes. Aug 14: Updated inttypes.h to conform to the C99 standard. Several dozen macros were missing. Added __retry to the exception handling syntax. This construct can appear only within an except block and will provoke a jump to the start of the current try/except block Aug 13: Finished the long long work for the time being. Several small problems with long long conversions and cnstant folding were fixed, and the tests passed again. Aug 10: The cast (long long)&foo would not work. Fixed. When parsing 8LL << 6LL the compiler would not do the constant folding. Fixed. Aug 8: Improved the 64 bit support. The improvement is like 25% or more, depending on the program. Please test anew your 64 bit applications. Rewrote wininet.h since to make it current with the SDK. Aug 4: The function lldiv (and the corresponding lldiv_t) was missing from the standard library. Same with llabs. Both added. Aug 3: __declspec(naked) was not working when the function returned a pointer. Fixed. Added intrinsic _GetStackPointer() that returns the current machine stack. Modified intrinsics.h, added the documentation, etc. Aug 1: Added missing include file pdhmsg.h. Jul 29: Fixed problem in compiler when two consecutive __try blocks were written. Jul 25: Compiler: problem of expanding void inline functions fixed. Problem when expanding intrinsic function round to int fixed. Problem of memory overwrite when generating assembly listing fixed. Jul 20: Due to a typing mistake in libcrt0.asm and libcrt0s.asm the version of July 19th produce corrupted DLLs. (!!!). Fixed. Implemented psignal(int sig,char *msg); that will print a signal with a descriptive text. Added a documentation entry for it, and the prototype in signal.h Jul 19 Implemented GetExceptionCode() and GetExceptionInformation() for structured exception handling. The result of __except() is now evaluated and must not be an integer constant. It can be, but this is no longer mandatory. Modified lcccrt0.asm to implement the global variables needed by GetExceptionCode() and GetExceptionInformation(). Fixed problem in wresdll.dll: The second dialog box that was edited, the font would be of the wrong size. New header file containing all definitions needed for structured exception handling. Include this file if you want to use this feature. The alt left arrow (back in History) was not working correctly within wedit. Fixed. Jul 17: Added the implementation of FLT_ROUNDS to float.h. Added the intrinsic function _GetStatusWord() that returns the FPU status word. Changed the level of "Assignment in conditional expression" warning to a higher warning level. When a default argument of type enum was used, the compiler trapped. Fixed. The automatic generation of help files from within Wedit has been discontinued. There are now better tools that are freely available like doxygen, for instance. Jul 13: Fixed problem with offsets of unnamed structure/unions within a larger struct. Thanks to MrBCX for that. Fixed problem with sizeof variable length arrays: int fn(int n,int array[n]) { ... sizeof(array) } This produced a trap. Fixed. Fixed the problem with __try __except not working. This should run now but further work is planned. July 9: Added the syntax ++operator for redefining the pre-increment operator. You redefine the post increment with operator++. This makes the operator overloading consistent with the normal C syntax. The operator sizeof wasn't giving the correct results when used with flexible arrays. As an example: int fn(int a) { int array[a]; ... int s = sizeof(a); } Added warning "Assignment within conditional expression", that catches errors like: if (a = b) { ... } July 7: Fixed strrepl. Thanks John. The LPCREATESTRUCT was lost in win.h. Fixed. July 6: Added roundl round and roundf functions from the C99 standard that were missing Added lrint lrintl lrintf llrint llrintl llrintf that were missing also. The documentation (c-library.chm) was updated. Fixed bug of xprintf with negative numbers. Added the qfloat as a native type to the compiler. This allows a better handling of numbers like 123456889765645444566.414141414141444442222Q. Numbers ending with Q will be assumed qfloats. This is the first step of making the C99 feature of anonymous structures work. July 4: Fixed pow function. When overflow happened, instead of returning infinity, it was returning a NAN. Fixed. strtold() did not recognize the "inf" input. Fixed. The prototype of fegetexceptflag() was missing in fenv.h July 3: Added all the missing definitions in windows.h proposed by Mike Caetano. Improved NAN handling and definitions in math.h fpclassify had problems, returning NAN for INF quantities. Fixed. June 28: Added libraries npptools.lib mtxex.lib gpedit.lib fcachdll.lib rtutils.lib sensapi.lib credui.lib npptools.lib nmsupp.lib ntdsapi.lib sisbkup.lib winscard.lib Updated ntmsapi.lib odbc32.lib riched20.lib Added header files netmon.h gpedit.h filehc.h sensapi.h wincred.h sfc.h netsh.h ntdsapi.h schedule.h ntdsbmsg.h ntdsbcli.h winsmcrd.h scarderr.h winscard.h Updated winioctl.h If an inline function was defined but not used, the compiler would complain. Corrected. June 22: The variable length arrays continue to give some problems. Some of them fixed specifically when using vla arrays in function declarations: int addmat(int x,int y,double matin[x][y]) for example. Added the vertical property to progress controls. Up to now they could be only horizontal June 17: The mergeasm utility is incorporated into the compiler now. The produced assembler files will always have the C source text added to them. This eliminates the need of that utility. The printf j format was not recognized in the compiler and produced a spurious warning. Fixed. The qfloat.h had a line #pragma lib "qfloat.lib". This produced that the library would be searched in the current directory instead of in the standard include files. Fixed. Now is #pragma lib June 16: Added traffic.h to go with traffic.lib (import lib for traffic.dll) Added oleacc.lib cryptui.lib cryptnet.lib cryptui.lib odbcbcp.lib netsh.exp Added icm.lib ,sfc.lib and sfc.h, wsnmp32.lib Did you notice that this file has less typos? John Finlay has corrected them. I thank John for this and all the work he has done with the lcc-win32 compiler The memory dump in the debugger d ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: C语言 C编译器 lcc
 输入关键字,在本站1000多万海量源码库中尽情搜索: