错误"此声明没有存储类或类型说明符"

时间:2015-02-12 09:33:23

标签: c++ c visual-studio-2013

我正在使用Visual Studio编写我的第一个应用程序,但我并不理解它向我显示的错误。

有两个文件,Session和Login。 Login使用Session的set和get函数。你可以看到,登录电话" setCurrentLang"这是Visual Studio显示的消息:"此声明没有存储类或类型说明符"在Login.cpp上。如果我编译,那就是错误:

  

"错误26错误C2365:' setCurrentLang' :重新定义;以前的定义是'功能' (....)\ GUI \ Login.cpp"

这是Session.cpp文件:

#include "Session.h"
const char* CURRENT_LANG;
void setCurrentLang( char* lang){
    CURRENT_LANG = strdup(lang);
}
const char* getCurrentLang(){
    return CURRENT_LANG;
}

Session.h

#ifndef __SESSION_H__
#define __SESSION_H__

#include <cstring>
#include <stdio.h>

void setCurrentLang( char* lang);
const char* getCurrentLang();

#endif

Login.cpp

#include "Login.h"
#include "../data/Session.h"

setCurrentLang("English"); 

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:4)

您可以在任何上下文之外调用该方法。这是不可能的。如果要在start时设置语言,可以在main的开头调用它,也可以使用在构造函数中调用它的虚拟静态类:

static class LanguageSetter
{
public:
    LanguageSetter()
    {
        setCurrentLang("English");
    }
} dummy;

或者只需在CURRENT_LANG的定义中设置默认值:

// std::string because this is C++, not C
std::string CURRENT_LANG = "English";