关于编译错误
  • 板块学术版
  • 楼主rainygame
  • 当前回复9
  • 已保存回复9
  • 发布时间2023/5/11 21:58
  • 上次更新2023/10/23 16:03:39
查看原帖
关于编译错误
804607
rainygame楼主2023/5/11 21:58

我在卡常的时候,它给我一个编译错误:

54 14 …… [Error] inlining failed in call to always_inline 'int getc()': target specific option mismatch

我的代码:

#include <stdio.h>
#pragma GCC optimize(3)
#pragma GCC target("avx")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
#define reg register
#define con const
#define f_inline inline __attribute__((always_inline))

char buf[67108864], *p1 = buf, *p2 = buf;
f_inline int getc(){  // 莫名其妙不能 f_inline 了 
    return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 67108864, stdin), p1==p2) ? EOF : *p1++;
}

f_inline int uread(){
	reg int x(0), ch;
	while ((ch = getc()) < 48);
	do{
		x = (x << 1) + (x << 3) + (ch ^ 48);
	}while ((ch = getc()) > 47);
	return x;
}

char pbuf[2097152];
int p3(-1);
f_inline void flush(){
	fwrite(pbuf, 1, p3+1, stdout);
	p3 = -1;
}

void uprint(reg con int &x){
	reg con int tmp(x/10);  // 留着以后用 
	if (tmp) uprint(tmp);
	pbuf[++p3] = x-(tmp<<1)-(tmp<<3)+48;  // 技巧,x-x/10*10 等价于 x%10 
}

int a[100000];

int main(){
	freopen("1.in", "r", stdin);
	freopen("1.out", "w", stdout);
	
	reg con int n(uread());
	reg int m(uread()), i(0);
	
	do{
		a[i] = uread();
	}while ((++i) < n);
	
	do{
		reg con int opt(uread()), l(uread()), r(uread()), x(uread());
		reg int j(l-1);
		if (opt == 1){
			do{
				a[j] > x ? a[j] -= x : 0;
			}while ((++j) < r);
		}else{
			reg int ans(0);
			do{
				a[j] == x ? ++ans : 0;
			}while ((++j) < r);
			if (p3 > 1048576) flush();  // 输出
			uprint(ans);
			pbuf[++p3] = '\n';  // 换行
		}
	}while (--m);
	
	flush();  // 最后还要输出一下 
	
	return 0;
}

BDFS 没有想要的东西,所以请问一下各位大佬有没有可以把 f_inline 开开的方法。

2023/5/11 21:58
加载中...