c - 枚举数据类型和 gcc

标签 c linux enums

我有一个函数,其中一个函数参数是一个整数。在函数调用期间,我将枚举数据类型传递给该函数。使用 gcc 构建后,对函数内部 INTEGER 变量的任何访问都会导致段错误。

示例代码:

void somefun (unsigned int nState)
{
    switch (nState) // <-- Crashes on this line
    {
        //
        // functionality here ...
        //
    }
}

enum {

    UNDEFINED = -1,
    STATE_NICE,
    STATE_GREEDY
} E_STATE;

int main (int argc, char *argv [])
{
    somefun (STATE_NICE);
}

最佳答案

首先,枚举是在 main() 中定义的,对于 somefun() 不存在。您应该在 main 之外定义枚举,尽管我看不出这是如何导致崩溃的。

在 main 之外定义枚举后,您应该将 somefun 定义为 somefun( E_STATE nState ) 并再次测试。

关于c - 枚举数据类型和 gcc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/613614/

相关文章:

java - 在将某些内容馈送到管道 STDIN 之前,无法跟踪以管道 STDOUT 为食的运行进程

c++ - 具有作用域枚举的位集无法编译

java - 如何返回枚举数组,出现此错误

c++ - 无法链接 libcurl。(Dev-C++)

c - 为什么这个程序会抛出段错误异常?

linux - Boost 交叉编译 arm,尽管在 user-config.jam 中有定义,但工具集未被识别

java - 在 Java 中使用具有枚举类型的元组作为 HashMap 的键

c - 在一组数字中找到唯一的位

c - 在一台机器上构建 opencv exe 并在另一台没有安装 opencv 的机器上运行?

python - Amazon Linux EBS 中 glibc 的正确包名