__in __pre 是些什么东西

本文详细解释了一系列宏定义,这些宏用于标记参数属性,如输入、输出、有效性等。这些宏定义在代码注释和预处理阶段起到重要作用。

宏定义, 只是用来标识输入和输了参数, 没什么其他的含义

#define __in   __pre __valid __pre __deref __readonly
#define __out  __ecount(1) __post __valid __refparam

   
#define __null
   
#define __notnull
   
#define __maybenull
   
#define __readonly
   
#define __notreadonly
   
#define __maybereadonly
   
#define __valid
   
#define __notvalid
   
#define __maybevalid
   
#define __readableTo(extent)
   
#define __elem_readableTo(size)
   
#define __byte_readableTo(size)
   
#define __writableTo(size)
   
#define __elem_writableTo(size)
   
#define __byte_writableTo(size)
   
#define __deref
   
#define __pre
   
#define __post
   
#define __precond(expr)
   
#define __postcond(expr)
   
#define __exceptthat
   
#define __execeptthat
   
#define __inner_success(expr)
   
#define __inner_checkReturn
   
#define __inner_typefix(ctype)
   
#define __inner_override
   
#define __inner_callback
   
#define __inner_blocksOn(resource)
   
#define __inner_fallthrough_dec

都是空定义

//预先声明 //输入输出辅助 in fast_read(); vd sc_arr1(in arr[], in n); vd pr_arr1(in arr[], in n); vd sc_arr2(in arr[][MAX_N], in row, in col); vd pr_arr2(in arr[][MAX_N], in row, in col); //基础数学计算 ll norm(ll x); ll mod_add(ll a, ll b); ll mod_sub(ll a, ll b); ll mod_qmul(ll a, ll b); ll mod_fmul(ll a, ll b); ll fibonacci1(in n); ll fibonacci_mem(in n); ll fib_iterative(in n); ll factorial1(in n); ll factorial2(in n); vd pre_factorial(); ll Com_mod(in n, in k); ll Com(in n, in k); ll Per(in n, in k); in NPer(in a[], in n); ll pow_mod(ll base, ll exp); ll gcd2(ll a, ll b); ll gcd3(ll a, ll b, ll c); ll gcdn(ll arr[], in n); ll lcm2(ll a, ll b); ll lcm3(ll a, ll b, ll c); ll lcmn(ll arr[], in n); //基础判断函数 in is_palindrome_in(in x); in is_fibonacci(in x); in is_factorial(in x); in is_psquare(in x); in is_prime(in x); in is_power2(in x); //基础位运算 ll set_bit(ll x, in i); ll clr_bit(ll x, in i); ll set_bit_rng(ll x, in i, in j); ll clr_bit_rng(ll x, in i, in j); ll trn_bit(ll x, in i); ll trn_bit_rng(ll x, in i, in j); ll swap_bit(ll x, in i, in j); vd ext_bit_arr(ll x, in i, in j, in res[]); ll low_bit(ll x); in cnt_ones(ll x); //任意进制转换 ll to_bin(ll n); in to_bin_arrl(ll n, in arr[]); in to_bin_arrh(ll n, in arr[]); in to_bin_2arrl(in dec[], in bin[], in len); in to_bin_2arrh(in dec[], in bin[], in len); in str_to_dgt1(const char* str, in digits[]); in to_bin_strl(const char* num_str, in bin[]); in str_to_dgt2(const char* str, in digits[]); in to_bin_strh(const char* num_str, in bin[]); in to_dec1(in bin[], in len); in to_dec2_1(in bin[], in n, in dec[]); in to_dec2_2(in bin[], in n, in dec[]); ll digit_change(in n, in base); in char_to_value(ch c); ch value_to_char(in val); in convert_base(const ch * n, in a, in b, ch m[]); in convert_base_s(const ch* n, in a, in b, ch result[]); ll mod_str(const ch* num, in base, in mod); //字符串处理 in is_palindrome_str(const ch * str); vd rev_str_all(ch * str); vd rev_str_range(ch * str, in start, in end); vd det_frt_n(ch str[], in n); vd det_end_n(ch str[], in n); vd det_range(ch str[], in m, in n); vd sub_str(const ch * str, ch * dest, in m, in n); vd rep_str(const ch * str, ch * dest, in m, in n, const ch * rep, in x); vd ist_str(const ch * str, ch * dest, in n, const ch * rep, in x); in ch_freq(const ch * str, ch c); in ch_freq_range(const ch * str, in m, in n, ch c); //数组综合 vd ex_dgt(in num, in digits[]); in max_arr(in arr[], in n); in max_idx(in arr[], in n); in mode_in(in arr[], in n); db mode_db(db arr[], in n); db median_in(in arr[], in n); db median_db(db arr[], in n); db p_quantile_in(in arr[], in n, db p); db p_quantile_db(db arr[], in n, db p); db mean_in(in arr[], in n); db mean_db(db arr[], in n); db variance_in(in arr[], in n); db variance_db(db arr[], in n); ll sum_arr_mod(const in arr[], in n); ll mul_arr_mod(const in arr[], in n); vd reverse_arr(in arr[], in n); vd remove_same(const in src[], in srcSize, in dest[], in * destSize); in count_inversions(in arr[], in n); in count_inversions_nd(const in arr[], in n); vd mat_mul(in A[][MAX_N], in B[][MAX_N], in C[][MAX_N], in m, in r, in n); vd det_Mij(in A[][MAX_N], in Mij[][MAX_N], in row, in col, in n); in mat_det(in A[][MAX_N], in n); vd mat_tran(in A[][MAX_N], in T[][MAX_N], in m, in n); in mat_rank(in A[][MAX_N], in m, in n); //排序查找 vd swap(in * a, in * b); vd swap_db(db * a, db * b); in incmp_up(const vd * a, const vd * b); in incmp_dn(const vd * a, const vd * b); in dbcmp_up(const vd * a, const vd * b); in dbcmp_dn(const vd * a, const vd * b); in chcmp_as(const vd * a, const vd * b); in stcmp_as(const vd * a, const vd * b); in mult_cmp(const vd * a, const vd * b); vd bubble_sort(in * arr, size_t n); vd quick_sort(in arr[], in l, in r); vd quick_sort_3w(in arr[], in l, in r); vd quick_csort(in arr[], in l, in r, cmp_fn cmp); vd quick_csort_3w(in arr[], in l, in r, cmp_fn cmp); vd quick_csort_3w_db(db arr[], in l, in r, cmp_fn cmp); in bin_search(in arr[], in n, in x); in bin_findf(in arr[], in n, in x); in bin_findl(in arr[], in n, in x); db bin_solve(db low, db high, db(*f)(db)); db bin_solve_s(db low, db high); //几何综合 in is_line(ll x1, ll y1, ll x2, ll y2, ll x3, ll y3); in is_pline(ll x, ll y, ll x1, ll y1, ll x2, ll y2); ll cross_point(ll x1, ll y1, ll x2, ll y2, ll x3, ll y3); in is_cline(ll x1, ll y1, ll x2, ll y2, ll x3, ll y3, ll x4, ll y4); db dis_d2(db x1, db y1, db x2, db y2); db dis_d3(db x1, db y1, db z1, db x2, db y2, db z2); ll tri_2s(ll x1, ll y1, ll x2, ll y2, ll x3, ll y3); ll ply_2s(in n, ll x[], ll y[]); db tri_c(db x1, db y1, db x2, db y2, db x3, db y3); db ply_c(in n, db x[], db y[]); //时间日期 in is_leap(in year); in d_of_m_sw(in year, in month); in d_of_m_ar(in year, in month); in d_of_y(in year, in month, in day); in week(in year, in month, in day); //特殊模板 in is_negative(ch s[]); vd get_abs(ch s[], ch abs_str[]); in str_cmp(ch s1[], ch s2[]); in str_add_pos(ch s1[], ch s2[], in ans[]); in str_sub_pos(ch s1[], ch s2[], in ans[]); in str_mul_pos(ch s1[], ch s2[], in ans[]); in str_add_n(ch s1[], ch s2[], in ans[]); in str_sub_n(ch s1[], ch s2[], in ans[]); in str_mul_n(ch s1[], ch s2[], in ans[]); in fixed_div_round(ll a, ll b, in r, in res[], in resI[], in resD[]); in fixed_div_floor(ll a, ll b, in r, in res[], in resI[], in resD[]); in fixed_div_ceil(ll a, ll b, in r, in res[], in resI[], in resD[]); in str_fac(in n, in ans[]); in str_pow(in base, in exp, in res[]); in str_to_anum(ch s[], in num[]); vd num_to_str(in num[], in len, ch s[]); //待删除 in str_add(ch s1[], ch s2[], in ans[]); in str_sub(ch s1[], ch s2[], in ans[]); in str_mul(ch s1[], ch s2[], in ans[]);你看了我之前的函数,帮我把未加入声明的加入进去,不要改我的其他东西,包括注释
最新发布
12-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值