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

Dan*_*034 3 c c++ visual-studio-2013

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

有两个文件,Session 和 Login。登录使用Session的set和get函数。如下所示,Login 调用“setCurrentLang”,这是 Visual Studio 在 Login.cpp 上显示的消息:“此声明没有存储类或类型说明符”。如果我编译,这就是错误:

“错误 26 错误 C2365:‘setCurrentLang’:重新定义;先前的定义是‘function’(....)\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;
}
Run Code Online (Sandbox Code Playgroud)

会话.h

#ifndef __SESSION_H__
#define __SESSION_H__

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

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

#endif
Run Code Online (Sandbox Code Playgroud)

登录.cpp

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

setCurrentLang("English"); 
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助!

Ste*_*oft 6

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

static class LanguageSetter
{
public:
    LanguageSetter()
    {
        setCurrentLang("English");
    }
} dummy;
Run Code Online (Sandbox Code Playgroud)

或者简单地在定义中设置默认值CURRENT_LANG

// std::string because this is C++, not C
std::string CURRENT_LANG = "English";
Run Code Online (Sandbox Code Playgroud)