|
ouch.
Something you could try is defining the string parm in the RPG procedure
definition as follows:
D Parm * value options(*STRING)
Then in the C/C++ code you can do this:
extern "C" int DoSomething(char * szParm)
{
string myStringParm = szParm;
// move on into OOP world here...
It keeps the RPG relatively simple, and the char *'s are converted to
strings as early as possible. A few extra copies of the data, but in
most cases the simplicity is worth it (imo).
Marc
On 2/13/2014 9:43 AM, Tim Bronski wrote:
Yes, but the statement was the attempt to create a c++ string from ayourself in the foot and C++ does a better job of protecting you.
parameter passed from....an RPG program!
On 2/13/2014 6:36 PM, Marc Hunter wrote:
While I empathize, and certainly C++ also allows you to shoot yourself
in the foot, the code shown is philosophically (imo) a mix of C and C++
in that it uses char *s. Assuming both variables are strings then I
would code it as follows and avoid dipping into 'dangerous' char *
territory.
partName.insert(0, userName.substr(start, len));
(If I'm understanding the objective correctly)
Marc
On 2/13/2014 9:02 AM, Tim Bronski wrote:
On 2/13/2014 5:23 PM, Jon Paris wrote:
I would have said that C was brilliant if your aim was to shoot
downHi Jon, I would have let that slide but I've just finished tracking
a bug where c++ was using a different overloaded string function than
the one intended. Here's what the statement should have been:
partName.insert(0, &userName[start], len);
but instead it was
partName.insert(0, userName[start], len);
This compiles fine but the result was heinous...the c compiler would
have caught that one.
--
This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L)
mailing list
To post a message email: C400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/c400-l
or email: C400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/c400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.