[dpdk-dev] [PATCH] Minor C++11 compilation fix for rte_pci.h

Stefan Puiu stefan.puiu at gmail.com
Fri Feb 20 13:26:47 CET 2015


Hi and thanks for reviewing,

I seem to have somehow missed the email for this one and thought it
got lost. Sorry.

On Fri, Feb 13, 2015 at 12:27 PM, Mcnamara, John
<john.mcnamara at intel.com> wrote:
>> -----Original Message-----
>> From: Richardson, Bruce
>> Sent: Friday, February 13, 2015 10:18 AM
>> To: Mcnamara, John
>> Cc: Stefan Puiu; dev at dpdk.org
>> Subject: Re: [dpdk-dev] [PATCH] Minor C++11 compilation fix for rte_pci.h
>>
>> > >
>> > > In C++11 concatenated string literals need to have a space in between.
>> > > clang 3.4 reports this as an error (and IIRC also gcc-4.8):
>> > >
>> > > dpdk/include/rte_pci.h:96:26: error: invalid suffix on literal;
>> > > C++11 requires a space between literal and identifier
>> > > [-Wreserved-user-defined- literal]
>> >
>> >
>> > That concatenated string literal with PRI* is used in 65 files in the
>> DPDK source. Is that the only compilation error that you got?
>> >
>> > John
>>
>> It should only be a problem in header files. The C files for DPDK source
>> are always to be compiled up with a C compiler - only the headers get
>> included in application C++ code.
>>
>
> Hi,
>
> In that case it only occurs in 3 header files. I guess that patch should be extended to include those as well:
>
>     $ find lib  -name \*.h | xargs grep -l '"PRI'
>     lib/librte_vhost/vhost-net-cdev.h
>     lib/librte_eal/common/include/rte_pci.h
>     lib/librte_mempool/rte_mempool.h

Makes sense. Bruce is right, I'm only including headers from C++, the
library is compiled using C.

It seems I didn't hit the rte_mempool.h because (at least in 1.8.0)
that the usage of PRI* is under #ifdef RTE_LIBRTE_MEMPOOL_DEBUG. It's
very likely I didn't need the first file in the list.

Anyway, I'll send a new version.

>
> John.
> --
>
>
>
>


More information about the dev mailing list