这是一个未定义的行为吗?

Jac*_*ack 0 c undefined-behavior

这是下面的C代码是UB吗?我可以访问垃圾值吗?如果是这样,可以static function使它工作正常吗?

const char *foo_name(int x){
    switch(x) {
       case FOO: return "foo";
       case BAA: return "baa";
       default: return "unknow";
    }
}
Run Code Online (Sandbox Code Playgroud)

printf("%s\n",foo_name(FOO));根据C标准,如果没问题,我有点困惑.

Pra*_*ian 8

字符串文字具有静态存储持续时间,这意味着它们在程序的整个生命周期中都存在.您的代码中没有未定义的行为.