[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference microw::acmsxp

Title:ACMSxp product questions and comments
Notice:Refer to notes 1 through 11 for conference information
Moderator:DUCAT::ROSCOE
Created:Tue Oct 05 1993
Last Modified:Thu Jun 05 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:282
Total number of notes:1134

270.0. "ACMSxp specific identifier cause error (WNT, 3.0)" by TKOV60::OKAMURA (H.Okamura PS4-2/EJD3/NSIS, Japan) Tue Apr 01 1997 04:31

I found the underlying problem using Visual C++ 4.x and ACMSxp 3.0.
The problem has been occurd by missmatch of VC C pre-processor and C header
file.

If application developper define the following record named REC_RTNG which
contains the member named 'sftg' as same name as task group name.

TYPE
REC_RTNG RECORD 
    PRTG TEXT SIZE 8;
    CFTG TEXT SIZE 8;
    SFTG TEXT SIZE 8;
    D1TG TEXT SIZE 8;
    D2TG TEXT SIZE 8;
END RECORD;

TASK GROUP SFTG
    UUID "D30BFB7A-991C-11D0-9E2B-08002B3C1AF8";
    VERSION 1.0;
    TASK TASK1
        USING
          REC_RTNG PASSED AS INPUT;
END TASK GROUP ;

In this case, the generated C headder file (sftg.h) contains the following
#define directive.

#define sftg tps_sftg_epv_c

When the application developer refer this member (i.e. sftg), C pre-processor
complains like 'C2039: the specified member is not belonging to the structure'.

Since I use the Japanese version, I could not explain the accurate error 
message. Please refer error number C2039.

I beleave that VC C pre-processor replace 'sftg' string to 'tps_sftg_epv_c'
string before invoking C compiler.

Since X/Open STDL specification requires the identifiers should be lowwer
case string, ACMSxp specific identifier should be use upper case string 
instead to solve this error.

I'll attach simple client program to reproduce this error.

#include "sftg.h"

void main()
{
  struct rec_rtng arg1;

  memcpy(arg1.sftg, "sftgRTNG", 8);
}

Hiroaki
T.RTitleUserPersonal
Name
DateLines
270.1investigatingCAMINO::ROSCOEThu Apr 03 1997 03:373
    We are looking into this.  Thanks for reporting this.  
    
    Rich
270.2DUCAT::ROSCOEThu Apr 03 1997 14:3810
This is a bug that's been in the product all along.  The solution isn't as
simple as it may seem, since the xopen stdl specification does not require
identifiers to be in lower case.  In fact, upper and lower case are equivalent.

The work around is, of course, to not use the same name for a record field and
the task group.

We are investigating what the long term solution will be.

rich
270.3This is being tracked internally as QAR 1010. Thanks for report this - RichDUCAT::ROSCOEThu Apr 17 1997 14:230