<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic calling C, Error spawning cl.exe in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/calling-C-Error-spawning-cl-exe/m-p/957910#M19289</link>
    <description>&lt;DIV&gt;Hello,&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;I am using CVF under windows XP. I need to call C functions in my fortran code. As mentioned in the users guide I use the declaration (for eg)&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;EXTERNAL pushreal8array_&lt;BR /&gt;!DEC$ ATTRIBUTES C,REFERENCE :: pushreal8array_&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;in the fortran subroutine pushreal8 which calls the C function pushreal8array.&lt;/DIV&gt;
&lt;DIV&gt;CVF gives me the following error message:&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;--------------------Configuration: modele - Win32 Debug--------------------&lt;BR /&gt;Compiling...&lt;BR /&gt;Error spawning cl.exe&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;Does anybody know what to do? I can't figure it out.&lt;/DIV&gt;
&lt;DIV&gt;I haven't got any C compiler, is this a problem?&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Thank you,&lt;/DIV&gt;
&lt;DIV&gt;Yours sincerely&lt;/DIV&gt;
&lt;DIV&gt;B. Faugeras&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Hereis an exempleof the fortran routine and the C function:&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;cccccccccccccccccccccccccccccccccccccccccccccccccccc&lt;/DIV&gt;
&lt;DIV&gt; SUBROUTINE PUSHREAL8(x)&lt;/DIV&gt;
&lt;DIV&gt; &lt;/DIV&gt;
&lt;DIV&gt; EXTERNAL pushreal8array_&lt;BR /&gt; !DEC$ ATTRIBUTES C,REFERENCE :: pushreal8array_&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt; REAL*8 x, adr8buf(512), adr8lbuf(512)&lt;BR /&gt; INTEGER adr8ibuf,adr8ilbuf&lt;BR /&gt; LOGICAL adr8inlbuf&lt;BR /&gt; COMMON /adr8fbuf/adr8buf,adr8lbuf,&lt;BR /&gt; + adr8ibuf,adr8ilbuf,adr8inlbuf&lt;BR /&gt; DATA adr8ibuf/1/&lt;BR /&gt; DATA adr8ilbuf/-1/&lt;BR /&gt; DATA adr8inlbuf/.FALSE./&lt;BR /&gt;c&lt;BR /&gt; IF (adr8ilbuf.ne.-1) THEN&lt;BR /&gt; adr8ilbuf = -1&lt;BR /&gt; adr8inlbuf = .FALSE.&lt;BR /&gt; ENDIF&lt;BR /&gt; IF (adr8ibuf.ge.512) THEN&lt;BR /&gt; adr8buf(512) = x&lt;BR /&gt; CALL pushreal8array(adr8buf, 512)&lt;BR /&gt; adr8ibuf = 1&lt;BR /&gt; ELSE&lt;BR /&gt; adr8buf(adr8ibuf) = x&lt;BR /&gt; adr8ibuf = adr8ibuf+1&lt;BR /&gt; ENDIF&lt;BR /&gt; END&lt;/DIV&gt;
&lt;DIV&gt;cccccccccccccccccccccccccccccccccccccccccccccccc&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;static char adSid[]="$Id: adStack.c,v 1.5 10/.1/.1 .1:.3:.0 llh Exp $";&lt;/DIV&gt;
&lt;DIV&gt;#include &lt;STDLIB.H&gt;&lt;/STDLIB.H&gt;&lt;/DIV&gt;
&lt;DIV&gt;#define ONE_BLOCK_SIZE 16384&lt;BR /&gt;#define CHUNK_SIZE 4096&lt;/DIV&gt;
&lt;DIV&gt;/* The main stack is a double-chain of DoubleChainedBlock objects.&lt;BR /&gt;* Each DoubleChainedBlock holds an array[ONE_BLOCK_SIZE] of char. */&lt;BR /&gt;typedef struct _doubleChainedBlock{&lt;BR /&gt; struct _doubleChainedBlock *prev ;&lt;BR /&gt; char *contents ;&lt;BR /&gt; struct _doubleChainedBlock *next ;&lt;BR /&gt;} DoubleChainedBlock ;&lt;/DIV&gt;
&lt;DIV&gt;/* Globals that define the current position in the stack: */&lt;BR /&gt;static DoubleChainedBlock *curStack = NULL ;&lt;BR /&gt;static char *curStackTop = NULL ;&lt;BR /&gt;/* Globals that define the current LOOKing position in the stack: */&lt;BR /&gt;static DoubleChainedBlock *lookStack = NULL ;&lt;BR /&gt;static char *lookStackTop = NULL ;&lt;/DIV&gt;
&lt;DIV&gt;/* PUSHes "nbChars" consecutive chars from a location starting at address "x".&lt;BR /&gt;* Resets the LOOKing position if it was active.&lt;BR /&gt;* Checks that there is enough space left to hold "nbChars" chars.&lt;BR /&gt;* Otherwise, allocates the necessary space. */&lt;BR /&gt;void pushNarray(char *x, int nbChars) {&lt;BR /&gt; int nbmax = (curStack)?ONE_BLOCK_SIZE-(curStackTop-(curStack-&amp;gt;contents)):0 ;&lt;BR /&gt; lookStack = NULL ;&lt;BR /&gt; if (nbChars &amp;lt;= nbmax) {&lt;BR /&gt; memcpy(curStackTop,x,nbChars);&lt;BR /&gt; curStackTop+=nbChars ;&lt;BR /&gt; } else {&lt;BR /&gt; char *inx = x+(nbChars-nbmax) ;&lt;BR /&gt; if (nbmax&amp;gt;0) memcpy(curStackTop,inx,nbmax) ;&lt;BR /&gt; while (inx&amp;gt;x) {&lt;BR /&gt; /* Create new block: */&lt;BR /&gt; if ((curStack == NULL) || (curStack-&amp;gt;next == NULL)) {&lt;BR /&gt;DoubleChainedBlo
ck *newStack ;&lt;BR /&gt;char *contents = (char*)malloc(ONE_BLOCK_SIZE*sizeof(char)) ;&lt;BR /&gt;newStack = (DoubleChainedBlock*)malloc(sizeof(DoubleChainedBlock)) ;&lt;BR /&gt;if ((contents == NULL) || (newStack == NULL)) {&lt;BR /&gt; DoubleChainedBlock *stack = curStack ;&lt;BR /&gt; int nbBlocks = 0 ;&lt;BR /&gt; while(stack) {&lt;BR /&gt; stack = stack-&amp;gt;prev ;&lt;BR /&gt; nbBlocks++ ;&lt;BR /&gt; }&lt;BR /&gt; printf("Out of memory (allocated %i blocks of %i bytes)
",&lt;BR /&gt; nbBlocks, ONE_BLOCK_SIZE) ;&lt;BR /&gt; exit(0);&lt;BR /&gt;}&lt;BR /&gt;if (curStack != NULL) curStack-&amp;gt;next = newStack ;&lt;BR /&gt;newStack-&amp;gt;prev = curStack ;&lt;BR /&gt;newStack-&amp;gt;next = NULL ;&lt;BR /&gt;newStack-&amp;gt;contents = contents ;&lt;BR /&gt;curStack = newStack ;&lt;BR /&gt; } else&lt;BR /&gt;curStack = curStack-&amp;gt;next ;&lt;BR /&gt; /* new block created! */&lt;BR /&gt; inx -= ONE_BLOCK_SIZE ;&lt;BR /&gt; if(inx&amp;gt;x)&lt;BR /&gt;memcpy(curStack-&amp;gt;contents,inx,ONE_BLOCK_SIZE) ;&lt;BR /&gt; else {&lt;BR /&gt;int nbhead = (inx-x)+ONE_BLOCK_SIZE ;&lt;BR /&gt;curStackTop = curStack-&amp;gt;contents ;&lt;BR /&gt;memcpy(curStackTop,x,nbhead) ;&lt;BR /&gt;curStackTop += nbhead ;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;}&lt;/DIV&gt;
&lt;DIV&gt;/* POPs "nbChars" consecutive chars to a location starting at address "x".&lt;BR /&gt;* Resets the LOOKing position if it was active.&lt;BR /&gt;* Checks that there is enough data to fill "nbChars" chars.&lt;BR /&gt;* Otherwise, pops as many blocks as necessary. */&lt;BR /&gt;void popNarray(char *x, int nbChars) {&lt;BR /&gt; int nbmax = curStackTop-(curStack-&amp;gt;contents) ;&lt;BR /&gt; lookStack = NULL ;&lt;BR /&gt; if (nbChars &amp;lt;= nbmax) {&lt;BR /&gt; curStackTop-=nbChars ;&lt;BR /&gt; memcpy(x,curStackTop,nbChars);&lt;BR /&gt; } else {&lt;BR /&gt; char *tlx = x+nbChars ;&lt;BR /&gt; if (nbmax&amp;gt;0) memcpy(x,curStack-&amp;gt;contents,nbmax) ;&lt;BR /&gt; x+=nbmax ;&lt;BR /&gt; while (x&lt;TLX&gt; curStack = curStack-&amp;gt;prev ;&lt;BR /&gt; if (x+ONE_BLOCK_SIZE&lt;TLX&gt;memcpy(x,curStack-&amp;gt;contents,ONE_BLOCK_SIZE) ;&lt;BR /&gt;x += ONE_BLOCK_SIZE ;&lt;BR /&gt; } else {&lt;BR /&gt;int nbtail = tlx-x ;&lt;BR /&gt;curStackTop=(curStack-&amp;gt;contents)+ONE_BLOCK_SIZE-nbtail ;&lt;BR /&gt;memcpy(x,curStackTop,nbtail) ;&lt;BR /&gt;x = tlx ;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;}&lt;/TLX&gt;&lt;/TLX&gt;&lt;/DIV&gt;
&lt;DIV&gt;/* LOOKs "nbChars" consecutive chars to a location starting at address "x".&lt;BR /&gt;* Activates the LOOKing position if it was reset.&lt;BR /&gt;* LOOKing is just like POPping, except that the main pointer&lt;BR /&gt;* remains in place, so that the value is not POPped.&lt;BR /&gt;* Further PUSHs or POPs will start from the same place as if&lt;BR /&gt;* no LOOK had been made. */&lt;BR /&gt;void lookNarray(char *x, int nbChars) {&lt;BR /&gt; int nbmax ;&lt;BR /&gt; if (lookStack == NULL) {&lt;BR /&gt; lookStack = curStack ;&lt;BR /&gt; lookStackTop = curStackTop ;&lt;BR /&gt; }&lt;BR /&gt; nbmax = lookStackTop-(lookStack-&amp;gt;contents) ;&lt;BR /&gt; if (nbChars &amp;lt;= nbmax) {&lt;BR /&gt; lookStackTop-=nbChars ;&lt;BR /&gt; memcpy(x,lookStackTop,nbChars);&lt;BR /&gt; } else {&lt;BR /&gt; char *tlx = x+nbChars ;&lt;BR /&gt; if (nbmax&amp;gt;0) memcpy(x,lookStack-&amp;gt;contents,nbmax) ;&lt;BR /&gt; x+=nbmax ;&lt;BR /&gt; while (x&lt;TLX&gt; lookStack = lookStack-&amp;gt;prev ;&lt;BR /&gt; if (x+ONE_BLOCK_SIZE&lt;TLX&gt;memcpy(x,lookStack-&amp;gt;contents,ONE_BLOCK_SIZE) ;&lt;BR /&gt;x += ONE_BLOCK_SIZE ;&lt;BR /&gt; } else {&lt;BR /&gt;int nbtail = tlx-x ;&lt;BR /&gt;lookStackTop=(lookStack-&amp;gt;contents)+ONE_BLOCK_SIZE-nbtail ;&lt;BR /&gt;memcpy(x,lookStackTop,nbtail) ;&lt;BR /&gt;x = tlx ;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;}&lt;/TLX&gt;&lt;/TLX&gt;&lt;/DIV&gt;
&lt;DIV&gt;/****** Exported PUSH/POP/LOOK functions for ARRAYS: ******/&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;void pushreal8array_(char *x, int *n) {&lt;BR /&gt; pushNarray(x,(*n*8)) ;&lt;BR /&gt;}&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Mon, 17 May 2004 21:08:59 GMT</pubDate>
    <dc:creator>blaise_faugeras</dc:creator>
    <dc:date>2004-05-17T21:08:59Z</dc:date>
    <item>
      <title>calling C, Error spawning cl.exe</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/calling-C-Error-spawning-cl-exe/m-p/957910#M19289</link>
      <description>&lt;DIV&gt;Hello,&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;I am using CVF under windows XP. I need to call C functions in my fortran code. As mentioned in the users guide I use the declaration (for eg)&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;EXTERNAL pushreal8array_&lt;BR /&gt;!DEC$ ATTRIBUTES C,REFERENCE :: pushreal8array_&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;in the fortran subroutine pushreal8 which calls the C function pushreal8array.&lt;/DIV&gt;
&lt;DIV&gt;CVF gives me the following error message:&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;--------------------Configuration: modele - Win32 Debug--------------------&lt;BR /&gt;Compiling...&lt;BR /&gt;Error spawning cl.exe&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;Does anybody know what to do? I can't figure it out.&lt;/DIV&gt;
&lt;DIV&gt;I haven't got any C compiler, is this a problem?&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Thank you,&lt;/DIV&gt;
&lt;DIV&gt;Yours sincerely&lt;/DIV&gt;
&lt;DIV&gt;B. Faugeras&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Hereis an exempleof the fortran routine and the C function:&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;cccccccccccccccccccccccccccccccccccccccccccccccccccc&lt;/DIV&gt;
&lt;DIV&gt; SUBROUTINE PUSHREAL8(x)&lt;/DIV&gt;
&lt;DIV&gt; &lt;/DIV&gt;
&lt;DIV&gt; EXTERNAL pushreal8array_&lt;BR /&gt; !DEC$ ATTRIBUTES C,REFERENCE :: pushreal8array_&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt; REAL*8 x, adr8buf(512), adr8lbuf(512)&lt;BR /&gt; INTEGER adr8ibuf,adr8ilbuf&lt;BR /&gt; LOGICAL adr8inlbuf&lt;BR /&gt; COMMON /adr8fbuf/adr8buf,adr8lbuf,&lt;BR /&gt; + adr8ibuf,adr8ilbuf,adr8inlbuf&lt;BR /&gt; DATA adr8ibuf/1/&lt;BR /&gt; DATA adr8ilbuf/-1/&lt;BR /&gt; DATA adr8inlbuf/.FALSE./&lt;BR /&gt;c&lt;BR /&gt; IF (adr8ilbuf.ne.-1) THEN&lt;BR /&gt; adr8ilbuf = -1&lt;BR /&gt; adr8inlbuf = .FALSE.&lt;BR /&gt; ENDIF&lt;BR /&gt; IF (adr8ibuf.ge.512) THEN&lt;BR /&gt; adr8buf(512) = x&lt;BR /&gt; CALL pushreal8array(adr8buf, 512)&lt;BR /&gt; adr8ibuf = 1&lt;BR /&gt; ELSE&lt;BR /&gt; adr8buf(adr8ibuf) = x&lt;BR /&gt; adr8ibuf = adr8ibuf+1&lt;BR /&gt; ENDIF&lt;BR /&gt; END&lt;/DIV&gt;
&lt;DIV&gt;cccccccccccccccccccccccccccccccccccccccccccccccc&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;static char adSid[]="$Id: adStack.c,v 1.5 10/.1/.1 .1:.3:.0 llh Exp $";&lt;/DIV&gt;
&lt;DIV&gt;#include &lt;STDLIB.H&gt;&lt;/STDLIB.H&gt;&lt;/DIV&gt;
&lt;DIV&gt;#define ONE_BLOCK_SIZE 16384&lt;BR /&gt;#define CHUNK_SIZE 4096&lt;/DIV&gt;
&lt;DIV&gt;/* The main stack is a double-chain of DoubleChainedBlock objects.&lt;BR /&gt;* Each DoubleChainedBlock holds an array[ONE_BLOCK_SIZE] of char. */&lt;BR /&gt;typedef struct _doubleChainedBlock{&lt;BR /&gt; struct _doubleChainedBlock *prev ;&lt;BR /&gt; char *contents ;&lt;BR /&gt; struct _doubleChainedBlock *next ;&lt;BR /&gt;} DoubleChainedBlock ;&lt;/DIV&gt;
&lt;DIV&gt;/* Globals that define the current position in the stack: */&lt;BR /&gt;static DoubleChainedBlock *curStack = NULL ;&lt;BR /&gt;static char *curStackTop = NULL ;&lt;BR /&gt;/* Globals that define the current LOOKing position in the stack: */&lt;BR /&gt;static DoubleChainedBlock *lookStack = NULL ;&lt;BR /&gt;static char *lookStackTop = NULL ;&lt;/DIV&gt;
&lt;DIV&gt;/* PUSHes "nbChars" consecutive chars from a location starting at address "x".&lt;BR /&gt;* Resets the LOOKing position if it was active.&lt;BR /&gt;* Checks that there is enough space left to hold "nbChars" chars.&lt;BR /&gt;* Otherwise, allocates the necessary space. */&lt;BR /&gt;void pushNarray(char *x, int nbChars) {&lt;BR /&gt; int nbmax = (curStack)?ONE_BLOCK_SIZE-(curStackTop-(curStack-&amp;gt;contents)):0 ;&lt;BR /&gt; lookStack = NULL ;&lt;BR /&gt; if (nbChars &amp;lt;= nbmax) {&lt;BR /&gt; memcpy(curStackTop,x,nbChars);&lt;BR /&gt; curStackTop+=nbChars ;&lt;BR /&gt; } else {&lt;BR /&gt; char *inx = x+(nbChars-nbmax) ;&lt;BR /&gt; if (nbmax&amp;gt;0) memcpy(curStackTop,inx,nbmax) ;&lt;BR /&gt; while (inx&amp;gt;x) {&lt;BR /&gt; /* Create new block: */&lt;BR /&gt; if ((curStack == NULL) || (curStack-&amp;gt;next == NULL)) {&lt;BR /&gt;DoubleChainedBlo
ck *newStack ;&lt;BR /&gt;char *contents = (char*)malloc(ONE_BLOCK_SIZE*sizeof(char)) ;&lt;BR /&gt;newStack = (DoubleChainedBlock*)malloc(sizeof(DoubleChainedBlock)) ;&lt;BR /&gt;if ((contents == NULL) || (newStack == NULL)) {&lt;BR /&gt; DoubleChainedBlock *stack = curStack ;&lt;BR /&gt; int nbBlocks = 0 ;&lt;BR /&gt; while(stack) {&lt;BR /&gt; stack = stack-&amp;gt;prev ;&lt;BR /&gt; nbBlocks++ ;&lt;BR /&gt; }&lt;BR /&gt; printf("Out of memory (allocated %i blocks of %i bytes)
",&lt;BR /&gt; nbBlocks, ONE_BLOCK_SIZE) ;&lt;BR /&gt; exit(0);&lt;BR /&gt;}&lt;BR /&gt;if (curStack != NULL) curStack-&amp;gt;next = newStack ;&lt;BR /&gt;newStack-&amp;gt;prev = curStack ;&lt;BR /&gt;newStack-&amp;gt;next = NULL ;&lt;BR /&gt;newStack-&amp;gt;contents = contents ;&lt;BR /&gt;curStack = newStack ;&lt;BR /&gt; } else&lt;BR /&gt;curStack = curStack-&amp;gt;next ;&lt;BR /&gt; /* new block created! */&lt;BR /&gt; inx -= ONE_BLOCK_SIZE ;&lt;BR /&gt; if(inx&amp;gt;x)&lt;BR /&gt;memcpy(curStack-&amp;gt;contents,inx,ONE_BLOCK_SIZE) ;&lt;BR /&gt; else {&lt;BR /&gt;int nbhead = (inx-x)+ONE_BLOCK_SIZE ;&lt;BR /&gt;curStackTop = curStack-&amp;gt;contents ;&lt;BR /&gt;memcpy(curStackTop,x,nbhead) ;&lt;BR /&gt;curStackTop += nbhead ;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;}&lt;/DIV&gt;
&lt;DIV&gt;/* POPs "nbChars" consecutive chars to a location starting at address "x".&lt;BR /&gt;* Resets the LOOKing position if it was active.&lt;BR /&gt;* Checks that there is enough data to fill "nbChars" chars.&lt;BR /&gt;* Otherwise, pops as many blocks as necessary. */&lt;BR /&gt;void popNarray(char *x, int nbChars) {&lt;BR /&gt; int nbmax = curStackTop-(curStack-&amp;gt;contents) ;&lt;BR /&gt; lookStack = NULL ;&lt;BR /&gt; if (nbChars &amp;lt;= nbmax) {&lt;BR /&gt; curStackTop-=nbChars ;&lt;BR /&gt; memcpy(x,curStackTop,nbChars);&lt;BR /&gt; } else {&lt;BR /&gt; char *tlx = x+nbChars ;&lt;BR /&gt; if (nbmax&amp;gt;0) memcpy(x,curStack-&amp;gt;contents,nbmax) ;&lt;BR /&gt; x+=nbmax ;&lt;BR /&gt; while (x&lt;TLX&gt; curStack = curStack-&amp;gt;prev ;&lt;BR /&gt; if (x+ONE_BLOCK_SIZE&lt;TLX&gt;memcpy(x,curStack-&amp;gt;contents,ONE_BLOCK_SIZE) ;&lt;BR /&gt;x += ONE_BLOCK_SIZE ;&lt;BR /&gt; } else {&lt;BR /&gt;int nbtail = tlx-x ;&lt;BR /&gt;curStackTop=(curStack-&amp;gt;contents)+ONE_BLOCK_SIZE-nbtail ;&lt;BR /&gt;memcpy(x,curStackTop,nbtail) ;&lt;BR /&gt;x = tlx ;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;}&lt;/TLX&gt;&lt;/TLX&gt;&lt;/DIV&gt;
&lt;DIV&gt;/* LOOKs "nbChars" consecutive chars to a location starting at address "x".&lt;BR /&gt;* Activates the LOOKing position if it was reset.&lt;BR /&gt;* LOOKing is just like POPping, except that the main pointer&lt;BR /&gt;* remains in place, so that the value is not POPped.&lt;BR /&gt;* Further PUSHs or POPs will start from the same place as if&lt;BR /&gt;* no LOOK had been made. */&lt;BR /&gt;void lookNarray(char *x, int nbChars) {&lt;BR /&gt; int nbmax ;&lt;BR /&gt; if (lookStack == NULL) {&lt;BR /&gt; lookStack = curStack ;&lt;BR /&gt; lookStackTop = curStackTop ;&lt;BR /&gt; }&lt;BR /&gt; nbmax = lookStackTop-(lookStack-&amp;gt;contents) ;&lt;BR /&gt; if (nbChars &amp;lt;= nbmax) {&lt;BR /&gt; lookStackTop-=nbChars ;&lt;BR /&gt; memcpy(x,lookStackTop,nbChars);&lt;BR /&gt; } else {&lt;BR /&gt; char *tlx = x+nbChars ;&lt;BR /&gt; if (nbmax&amp;gt;0) memcpy(x,lookStack-&amp;gt;contents,nbmax) ;&lt;BR /&gt; x+=nbmax ;&lt;BR /&gt; while (x&lt;TLX&gt; lookStack = lookStack-&amp;gt;prev ;&lt;BR /&gt; if (x+ONE_BLOCK_SIZE&lt;TLX&gt;memcpy(x,lookStack-&amp;gt;contents,ONE_BLOCK_SIZE) ;&lt;BR /&gt;x += ONE_BLOCK_SIZE ;&lt;BR /&gt; } else {&lt;BR /&gt;int nbtail = tlx-x ;&lt;BR /&gt;lookStackTop=(lookStack-&amp;gt;contents)+ONE_BLOCK_SIZE-nbtail ;&lt;BR /&gt;memcpy(x,lookStackTop,nbtail) ;&lt;BR /&gt;x = tlx ;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;}&lt;/TLX&gt;&lt;/TLX&gt;&lt;/DIV&gt;
&lt;DIV&gt;/****** Exported PUSH/POP/LOOK functions for ARRAYS: ******/&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;void pushreal8array_(char *x, int *n) {&lt;BR /&gt; pushNarray(x,(*n*8)) ;&lt;BR /&gt;}&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 17 May 2004 21:08:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/calling-C-Error-spawning-cl-exe/m-p/957910#M19289</guid>
      <dc:creator>blaise_faugeras</dc:creator>
      <dc:date>2004-05-17T21:08:59Z</dc:date>
    </item>
    <item>
      <title>Re: calling C, Error spawning cl.exe</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/calling-C-Error-spawning-cl-exe/m-p/957911#M19290</link>
      <description>It is better to ask this question on Intel Compiler forum.
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Regards,&lt;BR /&gt; Vladimir&lt;/DIV&gt;</description>
      <pubDate>Wed, 19 May 2004 01:37:24 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/calling-C-Error-spawning-cl-exe/m-p/957911#M19290</guid>
      <dc:creator>Intel_C_Intel</dc:creator>
      <dc:date>2004-05-19T01:37:24Z</dc:date>
    </item>
  </channel>
</rss>

