EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Does IOC name have any restrictions ?
From: Ralph Lange via Tech-talk <tech-talk at aps.anl.gov>
To: EPICS Tech Talk <tech-talk at aps.anl.gov>
Date: Tue, 23 Jun 2020 14:43:34 +0200
Hi Hitesh,

The standard application templates in EPICS Base use the IOC name (from the makeBaseApp command line) as the first part of a function name for some generated C code.
That's why - if you use the application templates from Base - the IOC name must work as a C identifier. If you go in and manually change those names to something else that is unique on the IOC, you're fine.
(In the standard structure, the IOC name is also used as part of a directory name - that would be the next place where using special characters might backfire.)

Cheers,
~Ralph


On Tue, 23 Jun 2020 at 13:38, Hitesh Dhola via Tech-talk <tech-talk at aps.anl.gov> wrote:
Hello,

I am getting a make error in ioc generation using makeBaseApp, if I use any numeric in name "test".

I created IOC using this,

../bin/windows-x64-mingw/makeBaseApp.pl -t ioc 3test
../bin/windows-x64-mingw/makeBaseApp.pl -i -t ioc 3test

But, make fails with following error.

----------------
3test_registerRecordDeviceDriver.cpp:248:5: error: expected unqualified-id before numeric constant
  248 | int 3test_registerRecordDeviceDriver(DBBASE *pbase)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3test_registerRecordDeviceDriver.cpp: In function 'void rrddCallFunc(const iocshArgBuf*)':
3test_registerRecordDeviceDriver.cpp:291:19: error: unable to find numeric literal operator 'operator""test_registerRecordDeviceDriver'
  291 |     iocshSetError(3test_registerRecordDeviceDriver(*iocshPpdbbase));
-------------------------

It works fine if i use non-numeric, say using 'rtest' instead of '3test' is working fine. I am working on Windows 10 and MSYS environment.

Do we have any restriction in naming convention for IOC? or this is something else ?

Regards,
Hitesh


Replies:
Re: Does IOC name have any restrictions ? Hitesh Dhola via Tech-talk
References:
Does IOC name have any restrictions ? Hitesh Dhola via Tech-talk

Navigate by Date:
Prev: Does IOC name have any restrictions ? Hitesh Dhola via Tech-talk
Next: PyQt5, QImage, and PVRecords Marty Kraimer via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
Navigate by Thread:
Prev: Does IOC name have any restrictions ? Hitesh Dhola via Tech-talk
Next: Re: Does IOC name have any restrictions ? Hitesh Dhola via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
ANJ, 24 Jun 2020 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·