表达式必须为左值或函数指示符
时间: 2023-02-06 19:14:03 浏览: 269
表达式必须为左值,或者是一个函数指示符。
左值是指可以出现在赋值运算符左侧的表达式。通常来说,左值是一个变量或者是一个可以解除引用的对象。
函数指示符是指可以作为函数名的表达式。在 C 语言中,函数指示符可以是一个函数指针,也可以是一个函数的名称。
例如,下面的代码中,x 是一个左值,因为它可以出现在赋值运算符的左侧;而 foo 是一个函数指示符,因为它可以用作函数名。
int x;
x = 10;
int foo(int a, int b) {
return a + b;
}
相关问题
time_t orderTime = mktime(&tm{ 0,0,0,orderDay,orderMonth - 1,orderYear - 1900 });这段代码tm报错表达式必须为左值或函数指示符
嗯,这段代码的作用是将一个tm结构体表示的日期时间转换为一个time_t类型的时间戳。其中,tm结构体包含了年、月、日、时、分、秒等时间信息,而time_t类型的时间戳表示的是从1970年1月1日00:00:00至当前时间的秒数。
至于编译错误的问题,可能是因为你的编译器不支持使用花括号初始化结构体的方式。你可以试着将这段代码修改为如下形式:
```c++
struct tm orderTime = { 0 };
orderTime.tm_year = orderYear - 1900;
orderTime.tm_mon = orderMonth - 1;
orderTime.tm_mday = orderDay;
orderTime.tm_hour = 0;
orderTime.tm_min = 0;
orderTime.tm_sec = 0;
time_t orderTimestamp = mktime(&orderTime);
```
这样应该就能够正确编译了。
严重性 代码 说明 项目 文件 行 禁止显示状态 错误(活动) E0158 表达式必须为左值或函数指示符 Project6 D:\Program Files(x86)\Microsoft Visual Studio\repos\Project6\源1.c 68
这个错误提示 E0158 表示在项目文件中的第 68 行存在一个表达式,该表达式必须是左值(即可以赋值的变量)或者函数指示符。这意味着在该行的代码中使用了一个不能赋值的表达式,或者在该行的代码中使用了一个函数名,但是没有提供函数调用的括号。
要解决这个问题,您需要找到该行代码并检查是否有问题。如果该行代码使用了不能赋值的表达式,则需要改用能够赋值的变量。如果该行代码使用了函数名但没有提供函数调用的括号,则需要添加括号并确保函数的参数正确。
希望这能帮到您!
阅读全文