我正在编写一个程序,该程序读取包含我的数据的文本文件以及测量单位,例如:
8.9837 ns , 8.9826 ns , 8.8998 ns , 9.0433 ns , 143.5 ps
13.037 ns , 13.027 ns , 12.983 ns , 13.075 ns , 91.1 ps
-16.18 mV , -17.842 mV , -39.78 mV , -9.44 mV , 30.34 mV
我使用fgets
读取每一行,然后strtok
删除空格和逗号。当我尝试实现一个简单的函数转换我的测量单位的前缀时,我的问题出现了。该函数接收char*
并返回double
。看起来很简单,但编译返回:
error: ‘prefixing’ was not declared in this scope
这是我的功能:
double prefixing( char * prefixit )
{
if(strspn(prefixit, "m") == 1) return 1e-3;
...
return 1.;
}
以下是我的称呼方式:
char * p = strtok (line,spliter);
double prefix = prefixing(p);
任何关于我做错事的建议都将不胜感激。
干杯,
答案 0 :(得分:3)
可能prefixing
在调用该方法的行之后定义。这是不允许的,你需要移动定义或向前声明它让编译器知道函数存在,例如:
double prefixing(char*); // forward declaration
...
double prefix = prefixing(p);
...
double prefixing(char* prefixit) { // definition
}