错误:在启用SSHSFTPKeyMode之前预期'=',',',';','asm'或'__attribute__'

时间:2015-11-06 06:05:10

标签: c enums enumeration

我在使用枚举方面遇到了问题。

以下是代码:

.h文件

enum sshd_sftp_status
{
  SSHD_SUCCESS =0,
  SSHD_FAILED =1,
  SSHD_KEYS_NOT_INSTALLED =2,
};

extern sshd_sftp_status enableSSHSFTPKeyMode(int isSshSftpOnlyLogsActivated);

.c文件

sshd_sftp_status enableSSHSFTPKeyMode(int isSshSftpOnlyLogsActivated)
{
    if(isSshSftpOnlyLogsActivated)
    {
       //code
    }
    return SSHD_SUCCESS;
}

使用上面的代码,我在编译期间遇到错误:

  

错误:预期'=',',',';','asm'或'属性'之前   'enableSSHSFTPKeyMode'

如果我将回复类型从int更改为enum,则效果正常。

帮帮我。

2 个答案:

答案 0 :(得分:3)

在您的类型名称前面加上enum关键字 - 这就是造成错误的原因。

extern enum sshd_sftp_status enableSSHSFTPKeyMode(int isSshSftpOnlyLogsActivated);

enum sshd_sftp_status enableSSHSFTPKeyMode(int isSshSftpOnlyLogsActivated)
{
    if(isSshSftpOnlyLogsActivated)
    {
       //code
    }
    return SSHD_SUCCESS;
}

或者像这样使用typedef - 这可能更接近你想要的东西:

typedef enum 
{
    SSHD_SUCCESS =0,
    SSHD_FAILED =1,
    SSHD_KEYS_NOT_INSTALLED =2,
} sshd_sftp_status;

答案 1 :(得分:0)

我遇到了相同的错误,它的发生是由于忘记了最后一行中的;,例如:

#include <stdio.h>

#define blabla

uint32_t i

enum{
   a=0,
   b,
   c,
};
...