源码:
printf("Now time is:%s\n",asctime(gmtime(&time(NULL))));
提示错误:
error: lvalue required as unary ‘&’ operand
原因分析:
time(NULL)返回的是一个long型,为什么会出现这个错误,如果你深入汇编里,可以看到函数返回值一般存储在eax寄存器里,如果你写了这样的语句,像int a=f(),则调用完函数后的下一句就是mov 内存地址,eax,否则跟返回空值没什么区别,因此你上面这个&time(NULL)就相当于&void,因些会报需要左值
举例如下:
1
2
3
4
5
6
7
8
9
10
|
int
f()
{
return
2;
}
int
main()
{
int
a=f();
f();
return
0;
}
|
关键的汇编代码如下:
1
2
3
4
5
6
7
|
00401076 rep stos dword ptr [edi]
11:
int
a=f();
00401078 call @ILT+0(f) (00401005)
0040107D mov dword ptr [ebp-4],eax
12: f();
00401080 call @ILT+0(f) (00401005)
13:
return
0;
|