Tag: 未定义

未定义的变量错误

我是C语言编程的新手,我在理解编译程序时出现的错误时遇到了麻烦。 我有以下程序,这很简单,我的教授说的是正确的: #include #define TRUE 1 #define FALSE 0 #define BOOL int extern int x; extern BOOL do_exp; int exp_or_log(); main() { x = 10; do_exp = TRUE; printf(“2^%d = %d\n”, x, exp_or_log()); //should print 1024 x = 145; do_exp = FALSE; printf(“log(%d) = %d\n”, x, exp_or_log()); //should print 7 } 但是当我尝试编译它时,我得到: “_x”, referenced from: […]

C:标准和编译器中的整数溢出

由Carl Norum编辑,包括适当的标准参考。 C标准规定 如果在计算表达式期间发生exception情况 (即,如果结果未在数学上定义或未在其类型的可表示值范围内),则行为未定义。 是否有编译器开关可以保证整数溢出时的某些行为? 我想避免鼻腔恶魔。 特别是,我想强制编译器包装溢出。 为了唯一性,让标准为C99,编译器为gcc。 但我会对其他编译器(icc,cl)和其他标准(C1x,C89)的答案感兴趣。 事实上,为了惹恼C / C ++人群,我甚至欣赏C ++ 0x,C ++ 03和C ++ 98的答案。 注:国际标准ISO / IEC 10967-1可能与此相关,但据我所知,仅在资料性附录中提及。