Jac*_*ack 3 c optimization gcc static-variables
我CURRENT_DIR
在我的程序中多次打电话(见下文).就像程序运行时不可更改的可执行路径一样,每次调用此函数时都无需再次定义它.
所以,我正在寻找一个解决方案,一旦这个值设置,它就不应该再次设置.
我当前的解决方案是:创建一个静态变量,将所有值设置为0,并在if语句测试中检查第一个字符是否为非null,如果为true,则设置它.但它看起来像一个不优雅的..也许有一个更好的解决方案..通过使用包括宏的一些模型,我不知道.
看代码:
#define CURRENT_DIR ({ \
static char buffer[MAX_PATH + 1] = { 0 }; \
if(buffer[0] != '\0') \
getcurrentdir(buffer, MAX_PATH); \
buffer; \
})
Run Code Online (Sandbox Code Playgroud)
而不是gcc特定的表达式语句,我使用一个函数(inline
如果需要,可能是d):
const char* currentDir(void)
{
static char buffer[MAX_PATH + 1] = { 0 };
if (buffer[0] == '\0')
{
getcurrentdir(buffer, MAX_PATH);
}
return buffer;
}
Run Code Online (Sandbox Code Playgroud)
这有一些优点:
MAX_PATH
并且getcurrentdir
将取决于平台.)(gcc的表达式语句实现反正打破.该static
变量不会在多个重复使用CURRENT_DIR
的网站在相同的范围内,并且该if
测试是倒退,所以buffer
永远不会被初始化为一个非空字符串).
归档时间: |
|
查看次数: |
115 次 |
最近记录: |