【发布时间】:2015-12-24 09:09:28
【问题描述】:
我一直在寻找答案,但找不到任何东西可以让这段代码运行。我在声明时在主函数中得到了编译器突出显示的av[1]:
static char const *str = av[1];
这是我尝试使用 gcc 运行的代码:
#include <stdio.h>
#include <stdlib.h>
char *ft_strjoin(char const *s1, char const *s2);
void fct(char **av)
{
static char const *str = av[1];
str = ft_strjoin(av[1], av[1]);
printf("%s\n", str);
}
int main(int ac, char **av)
{
fct(&av[1]);
fct(&av[1]);
fct(&av[1]);
fct(&av[1]);
fct(&av[1]);
fct(&av[1]);
}
我发现this 很有趣,但我仍然不明白,也不知道如何运行此代码。
【问题讨论】:
-
你为什么把
static放在首位? -
我问这个是因为我正在做一个项目。我需要创建的函数的原型必须是这样的: int get_next_line(int const fd, char ** line);我需要从任何类型的文件导向器中获取缓冲区并将指针返回到每一行的开头(例如文本文件的开头)。我编写了一个代码,将每一行存储在一个链表中,所以这不是问题。更清楚地说,该函数可以插入一个循环中,它会在每个循环(直到 EOF)改变指向行首的指针。静态变量在我的代码中会是什么样子?
标签: c static compiler-errors initialization compile-time-constant