• c++关于namespace的**.obj **** already defined in ***.obj问题


    之前用namespace很多,不过内部都包含了class,函数和变量都是在类中,因此也没遇到过这个问题,昨天不想再包含类了,于是直接在写为

    //CommonUse.h

    #pragma once

    #include "XXXX"

    namespace CommUse

    {

    std::string valueToString(unsigned int nValue)

    {
    char szChar[15];
    sprintf(szChar, "%l", nValue);
    return szChar;
    }

    }

    在两个不同的.cpp文件中使用了valueToString函数,结果编译链接阶段就出现了题中的错误,今天来了搜了一下,看了其他人说的解决方案,修改为

    //CommonUse.h

    #pragma once

    #include "XXXX"


    namespace CComUse
    {
    std::string valueToString(unsigned int nValue);

    }

    //CommonUse.cpp

    #include "CommonUse.h"

    namespace CComUse
    {
    std::string valueToString(unsigned int nValue)
    {
    char szChar[15];
    sprintf(szChar, "%l", nValue);
    return szChar;
    }
    }

    然后就OK了。

    错误原因:程序包含了两个相同的定义,即重定义,然而只能定义唯一的一个,因此可以在.h中只包含函数或者变量声明,在source文件中进行定义。

    http://stackoverflow.com/questions/6109224/c-namespace-member-access-in-different-files-how-to-how-namespace-std-imple

  • 相关阅读:
    addslashes与mysql_real_escape_string的区别
    gcc
    php函数
    JAVA基本类库介绍
    Linux系统精华教程
    CJIAN
    我的未来不是梦! 全新时代
    html标签属性disabled用法 全新时代
    javamail收取邮件demo code 全新时代
    TortoiseSVN安装注意事项及中文语言包安装 全新时代
  • 原文地址:https://www.cnblogs.com/playerboy/p/3867309.html
Copyright © 2020-2023  润新知