c - 错误 : expected '=' , ',' , ';' , 'asm' 或 '__attribute__' 在 enableSSHSFTPKeyMode 之前

标签 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;
}

使用上面的代码,我在编译过程中遇到以下错误:

error: expected '=', ',', ';', 'asm' or 'attribute' before 'enableSSHSFTPKeyMode'

如果我将返回类型从 enum 更改为 int,它工作正常。

帮帮我。

最佳答案

只需在类型名称前加上 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;

关于c - 错误 : expected '=' , ',' , ';' , 'asm' 或 '__attribute__' 在 enableSSHSFTPKeyMode 之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33560478/

相关文章:

c - 为什么它从不进入for循环?

java - 使用 Hibernate 在 Postgresql 中保留 EnumSet

c# - 在 C# 中使用 "enumerate objects"类是一个好习惯吗?

通过 atoi 转换的复制字符串交付 0

c - 尝试使用 fgets 读取两行。为什么它只读第一行?

ios - 使用枚举时实现 NSObject 协议(protocol)时出现链接器错误?

c# - 通过 SqlDataSourceEnumerator.Instance.GetDataSources() 完成枚举时,.NET 不显示实例或版本

c++ - 不同的枚举,相同的值

c++ - 由于标准测试失败,用于查找点是否在 2D 多边形内的替代测试

c# - 如何使用 SQL 显示字符串枚举值而不是数字值