Without the global namespace prefix, it results in the following error ../linkers/rtems-exeinfo.cpp: In member function ‘void rld::exeinfo::image::output_compilation_unit(bool, bool)’: ../linkers/rtems-exeinfo.cpp:370:14: error: ‘rld::rtems::utils’ has not been declared rtems::utils::ostream_guard old_state( std::cout ); ^ ../linkers/rtems-exeinfo.cpp:370:35: error: expected ‘;’ before ‘old_state’ rtems::utils::ostream_guard old_state( std::cout );
Alex and I determined that the compiler is thinking that ostream_guard is defined in the rld::rtems namespace. This was the only way we figured out how to get it to compile without the typedef at the top of the file. -----Original Message----- From: Chris Johns <chr...@rtems.org> Sent: Friday, August 6, 2021 12:46 AM To: Ryan Long <ryan.l...@oarcorp.com>; devel@rtems.org Subject: Re: [PATCH v2] rtems-utils: Change data type definition On 6/8/21 6:43 am, Ryan Long wrote: > Remove typedef of ostream_guard and change datatype of ostream_guards > to have the namespace in the variable declarations. > --- > linkers/rtems-exeinfo.cpp | 6 ++---- > tester/covoar/CoverageMapBase.cc | 4 +--- > tester/covoar/ReportsHtml.cc | 4 +--- > tester/covoar/ReportsText.cc | 4 +--- > 4 files changed, 5 insertions(+), 13 deletions(-) > > diff --git a/linkers/rtems-exeinfo.cpp b/linkers/rtems-exeinfo.cpp > index c9bf5b6..caae168 100644 > --- a/linkers/rtems-exeinfo.cpp > +++ b/linkers/rtems-exeinfo.cpp > @@ -53,8 +53,6 @@ > #define kill(p,s) raise(s) > #endif > > -typedef rtems::utils::ostream_guard ostream_guard; > - > namespace rld > { > namespace exeinfo > @@ -369,7 +367,7 @@ namespace rld > */ > > rld::strings all_flags; > - ostream_guard old_state( std::cout ); > + ::rtems::utils::ostream_guard old_state( std::cout ); > > size_t source_max = 0; > > @@ -636,7 +634,7 @@ namespace rld > > void image::output_tls () > { > - ostream_guard old_state( std::cout ); > + ::rtems::utils::ostream_guard old_state( std::cout ); Why the global namespace prefix, ie `::` at the start? I have only seen this when referencing a global symbol that is not in a namespace, ie a C call. Chris _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel