【发布时间】:2012-12-17 06:18:54
【问题描述】:
我正在使用 C(Linux 操作系统)编程。我必须读取一个文件,检查该文件中的函数并打印相应的函数名称。到目前为止,我已经编程使用'{'的深度计算来识别函数。我知道__FUNCTION__ 预处理器指令用于打印当前文件的函数名。同样,是否有任何预处理器指令用于查找我们读取的文件的函数名称?我不关心任何特定的工具。我想让它编程。请指导我。提前致谢。
我已尝试实现此代码。此函数将行(在'{'之前)作为参数。
void ffname(char line[100])
{
int i,j,m,n,f=0;
char dt[10],fname[28];
char s[5][10]={"int","void","struct","char","float"};
dt = strtok(line," ");
for(i=0;i<5;i++)
{
m=strcmp(dt,s[i]);
if(m==0)
{
f=1;
n=strlen(dt);
}
}
if(f)
{
for(i=n+2,j=0;i<strlen(line);i++,j++)
{
if(line[i] == '*')
i++;
while(line[i] != '(')
{
fname[j]=line[i];
}
}
}
}
我不知道这段代码是否正确。我要这样使用吗?有没有办法找到函数名?
【问题讨论】:
-
C 预处理器使事情变得相当复杂。您可能想调用预处理器,然后检查删除预处理器指令后生成的文件。
-
编码标准可以使这项任务变得简单得多。只需要函数的大括号左对齐,其他所有内容都需要缩进,并且您有一种简单的方法来检测函数 - 左对齐左大括号之前的东西:-)如果您还需要一个空行在函数类型和签名之前,您可以收集函数声明和开括号之间的所有内容——也就是说,如果您可以断言编码标准。漂亮的打印机可以将您现有的代码转换为符合标准的代码。
标签: c function c-preprocessor preprocessor-directive