错误“无效初始值设定项”

问题描述:

这是将秒转换为secods-minutes-hours的程序。当我尝试编译它时,在“struct time_t malko = times(a);”中收到一个错误“Invalid initializer”请有人帮忙 P.S.我只能用结构体而不是指针或其他任何东西来做!错误“无效初始值设定项”


#include <stdio.h> 

    struct time_t { 
    float sec; 
    int min,hours; 
}; 

struct time_t fastest_time (float times[3]){ 
    int i; 
    int prom; 
    struct time_t malko; 
    for(i=0;i<3;i++) { 
    if(prom>times[i]) {prom=times[i];} 
} 
    malko.sec=prom%60; 
    prom=prom/60; 
    malko.min=prom%60; 
    prom=prom/60; 
    malko.hours=prom%60; 

    return malko; 
} 


int main() { 
    float a[3]={3423,1234,34232}; 
    struct time_t malko=times(a); 
    printf("\n %d %d %f", malko.hours, malko.min, malko.sec); 

    return 0; 
} 
+2

(1)什么是'times'这里'struct time_t malko = times(a);'?我没有看到一个名为'times'的函数(2)'prom'在'for'循环的第一次迭代中初始化,调用UB –

+2

您知道'time_t'是*标准类型吗?尽管结构标签(名称)存在于自己的名称空间中,但将标准类型使用相同的名称将会导致混淆。 –

+0

如果您尝试使用函数参数名称作为实际函数名称,那么您绝对和拼命[应该找到一本好初学者书](http://stackoverflow.com/questions/562303/the-definitive-c-book-指南和列表),并从头开始。如果您使用'times'是因为它是'faster_time'函数中的参数名称,那么您将如何尝试调用带有两个或更多参数的函数? –

struct time_t malko=fastest_time(a);代替struct time_t malko=times(a);

次没有为main定义。 (这里输出:http://codepad.org/yvGhoHw4

+0

非常感谢你的工作! –

+0

'time_t'已经在c库中定义。重新使用这个名字会导致问题在后面。 –