【发布时间】:2020-12-01 06:28:51
【问题描述】:
我有一个整数变量(例如int var1;),它在源代码中不应该是“18”。我的意思是,如果我项目的任何程序员写了这个:
var1 = 18;
编译器(我使用 C99)使它变红,并拒绝编译它。我想要#define 之类的东西,但反过来(变量不能有特殊值)。 C语言可以吗?
【问题讨论】:
-
使用函数赋值,函数可以检查值不是18。
-
如果 C11 是一个选项,您可以使用
static_assert(var == 18);,在 C99 上您可以使用普通的assert,但它在运行时有效。 -
如果程序员写
var1 = rand()怎么办?你会期望编译器也拒绝它编译吗? -
@Barmar 这是个好主意,但是任何程序员都可以使用“=”来赋值。
-
@MohammadKholghi 在调试器中,您可以监视变量并在将其设置为某些特殊值时中断。例如How to monitor variables in GDB and log it if it meets certain conditions?、Break when a value changes using the Visual Studio debugger
标签: c