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 |
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.R | Title | User | Personal Name | Date | Lines |
---|---|---|---|---|---|
270.1 | investigating | CAMINO::ROSCOE | Thu Apr 03 1997 00:37 | 3 | |
We are looking into this. Thanks for reporting this. Rich | |||||
270.2 | DUCAT::ROSCOE | Thu Apr 03 1997 11:38 | 10 | ||
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.3 | This is being tracked internally as QAR 1010. Thanks for report this - Rich | DUCAT::ROSCOE | Thu Apr 17 1997 11:23 | 0 |