terry@joshua.math.ucla.edu (06/14/91)
Help! I am having trouble porting a program from Microsoft C 5.x (I think) to Turbo C 2.0. The problem concerns some arrays. In the MSC source, they are defined in one module as unsigned huge buf[131072] float huge difbuf[32][1024] In the headers of the other source files, the variables are referred to as extern unsigned huge buf[] extern float huge difbuf[32][1024] This has to be compiled with the medium memory model. Turbo C has two complaints: 1. The arrays are too big (each is bigger than one segment) 2. "huge" can only modify pointers, not arrays It seems that with Turbo C, I have to declare something like unsigned huge *buf buf = farmalloc(131072L * sizeof(unsigned)) and in the other files put extern unsigned huge *buf Now, according to the FAQ, *buf and buf[] are not quite the same; I'm afraid I am making some mistake in the extern definition. However, I want to keep the 'huge' modified in there to beware of pointer arithmetic. I'm entirely unsure what to do with the 2D array, difbuf. And lastly, I want to initialize these arrays with memset(), but memset() only sets up to 65535 elements. The arrays may change in size; is there a good way to figure the size at run time and initialize with several calls to memset()? Please help! Please send your replies by e-mail; I will post a summary. Thanks! terry