在“.section”指令中制作 g++ 意外标记

问题描述 投票:0回答:0

我在 M1 macbbok air 中使用 brew gcc。当我试图编译我的代码时,它会弹出这样的错误消息:

/var/folders/xc/9rxcj3_s6qbdrxygnq8gvjcc0000gn/T//ccvSMulw.s:3603:29: error: unexpected token in '.section' directive
        .section .data.rel.ro.local
                                   ^

shell returned 1

我不知道如何解决它。 可以编译 hello-world 代码。 当我切换到 apple clang 时,它也可以编译我的代码。

我的编译命令:

g++-12 -Wall -std=c++17 file.cpp -o file

我的cpp代码:

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'

const int maxn = 2e5+5;
vector<int> adj[maxn];

void dfs(int i, vector<int> & dep, vector<bool> & visited) {
    visited[i] = 1;

    for (auto &v : adj[i]) {
        if (!visited[v]) {
            dep[v] = dep[i]+1;
            dfs(v, dep, visited);
        }
    }
}


signed main(){
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    int n;
    cin >> n;
    for (int i = 0; i < n-1; ++i) {
        int a, b;
        cin >> a >> b;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }

    vector<int> dep(n+1, 0);
    vector<bool> visited(n+1, 0);
    dfs(1, dep, visited);
    int maxDeepNode = 1;
    for (int i = 1; i <= n; ++i) {
        if (dep[i] > dep[maxDeepNode]) maxDeepNode = i;
    }
    
    fill(dep.begin(), dep.end(), 0);
    fill(visited.begin(), visited.end(), 0);

    dfs(maxDeepNode, dep, visited);

    int diameter = 0;
    for (auto &i : dep) diameter = max(i, diameter);
    cout << diameter << endl;

    return 0;
}
c++ gcc homebrew gcc-warning gcc12
© www.soinside.com 2019 - 2024. All rights reserved.