【发布时间】:2023-03-14 23:44:01
【问题描述】:
我不确定我的问题是否有意义,但我正在尝试编写一个程序,如果程序中使用了特定标志,它会更改定义宏的值。
默认情况下,定义值设置为 256,如果用户输入./program_name value,我希望该值是新的定义宏。这是下面的c代码。
在文件顶部定义的宏:
#define NUMBER_OF_VALUES 256
主函数内部:
if (strcmp(argv[1], "256")) {
#ifdef NUMBER_OF_VALUES
#undef NUMBER_OF_VALUES
#define NUMBER_OF_VALUES 128
#endif
}
else if (strcmp(argv[1], "128")) {
// do nothing
}
这段代码的工作原理,或者我发现它的工作原理是,如果输入的值是 256,它什么也不做,而当值是 128 时,它会尝试取消定义宏并用新值(即 128)再次定义它。
但是,这不起作用,当使用 128 的值时,它仍然默认执行 256 的值。
【问题讨论】:
-
宏是编译时构造(甚至是预编译)。这就是要了解“动态”宏是不可能的。
标签: c