On Mon, 1 Apr 2013, James Carlson wrote:

On 04/01/13 14:29, Apostolos Syropoulos wrote:
Hello everybody,

I was trying to compile a program and one file failed to compile
with g++ 4.7.2 but it compiles with CC: Sun C++ 5.12 SunOS_i386 2011/11/16.

The real question here might be why Sun's compiler doesn't gag.

using namespace std;
    namespace KPS {
        extern "C" {
            #include <string.h> //it includes another header that eventually
        }                       // included this header.
    }

I think that begs a bit of a question: why would you want to include any
header file (even one in your own application) within a namespace {}
block?  That sounds to me like an open invitation to hard-to-understand
problems.

I have a project which has done this since 1998. It has never caused a problem across many platforms and C++ compilers. The reason to do so is to divert the globally-visible symbols into a private namespace where they don't cause harm and they may be privately used. This helps with C symbols but not with macros.

The extra extern "C" might be causing a problem, and as others mentioned, including <cstring> includes the C string functions in the std namespace.

Bob
--
Bob Friesenhahn
bfrie...@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer,    http://www.GraphicsMagick.org/

_______________________________________________
OpenIndiana-discuss mailing list
OpenIndiana-discuss@openindiana.org
http://openindiana.org/mailman/listinfo/openindiana-discuss

Reply via email to