3
我在我的程序中很多次打电话CURRENT_DIR
(见下文)。就像程序运行时可执行文件的路径不会改变一样,每当我调用这个函数时都没有意义再次定义它。如何在一个只能定义一次的函数或宏函数中创建一个变量?
所以,我正在寻找一个解决方案,一旦这个值已经设置,它不应该再次设置。
我目前的解决方案是:将一个静态变量的所有值设置为0,并在if语句测试中检查第一个字符是否为非null,如果为true,则设置它。但它看起来像一个不雅的..也许有一个更好的解决方案..通过使用包括宏的一些模型,我不知道。任何帮助和differents解决方案非常赞赏。我希望你明白这一点。提前致谢。
看到代码:
#define CURRENT_DIR ({ \
static char buffer[MAX_PATH + 1] = { 0 }; \
if(buffer[0] != '\0') \
getcurrentdir(buffer, MAX_PATH); \
buffer; \
})
我应该添加“GCC”标签,因为这显然是特定于GCC? (即表达陈述) – Mysticial 2012-07-14 03:51:13
@Mysticial:我的错误。抱歉。编辑。 – Jack 2012-07-14 03:52:09
不需要道歉。更多标签增加了问题的可见性。 – Mysticial 2012-07-14 03:54:02