关于报错<应输入表达式>

各位好,C++里,使用宏定义之后报错显示应输入表达式,已检查周围空格全是英文格式的,环境为VS 2022

img

大哥,define后面不加赋值符号呀,把=去掉

#define PI 3.1415926
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7782250
  • 你也可以参考下这篇文章:2022华为机试真题 C++ 实现【求字符串中所有整数的最小和】
  • 除此之外, 这篇博客: 2022蓝桥杯C++刷题记录中的 试题 算法提高 区间覆盖问题 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 思路:先对vec进行左边界排序(小到大),然后考虑三种情况并依次判断

    • 需要res容器弹出尾部元素,插入新元素的情况
    1. 即将插入尾部的v[i]的左边界res容器的尾部元素左边界 相等那就取右边界最大的那个
    2. res容器元素个数大于2的情况下, 即将插入尾部的v[i]的左边界 小于 res容器中倒数第二个元素的右边界
    • 只需要直接尾部插入元素的情况
      即将插入尾部的v[i]的**左边界 小于 res容器中尾部元素的右边界。
    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    struct Node {
    	long long x;
    	long long y;
    };
    vector<Node> vec;
    vector<Node> res;
    bool mycmp(Node &a,Node &b) {
    	return a.x < b.x;
    }
    
    long long coLine(vector<Node>&v, vector<Node>&r,long n) {
    	r.push_back(v[0]);
    	for (int i = 1; i < v.size(); i++) {
    		if ( ((   (r[r.size() - 1].x == v[i].x ||(r.size() >= 2 && r[r.size() - 2].y >= v[i].x))   && r[r.size() - 1].y < v[i].y)) ) {
    			r.pop_back();
    			r.push_back(v[i]);
    		}
    		else if (r[r.size() - 1].y >= v[i].x && r[r.size() - 1].y < v[i].y) {
    			r.push_back(v[i]);
    		}
    	}
    	if (r[r.size() - 1].y < n) return -1;
    	else return r.size();
    }
    
    int main() {
    	long long n, m;
    	cin >> n >> m;
    	Node mynode;
    	for (long long i = 0; i < m; i++) {
    		cin >> mynode.x >> mynode.y;
    		vec.push_back(mynode);
    	}
    	sort(vec.begin(), vec.end(), mycmp);
    	cout << coLine(vec, res, n);
    }
    

#define修改为 const

define里乱加等号,导致替换后表达式里有多余的等号
变成了60 * = 10,一个常量不可以赋值