日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言中entern int x y,关于extern和int main()的结构有关问题

發布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言中entern int x y,关于extern和int main()的结构有关问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于extern和int main()的結構問題

本帖最后由 hashcat 于 2015-09-20 12:34:50 編輯

這是c實現md5加密的代碼,報錯部分是兩處extern,其實也就是兩處extern需要改動,但是試了半天,沒搞懂要怎么改...

#include?

#include?

#define?MD5_ROTL(a,b)?(MD5_tmp=(a),((MD5_tmp>>(32-b))&(0x7fffffff>>(31-b)))|(MD5_tmp<

#define?MD5_F(X,Y,Z)?((X&Y)|((~X)&Z))

#define?MD5_G(X,Y,Z)?((X&Z)|(Y&(~Z)))

#define?MD5_H(X,Y,Z)?(X^Y^Z)

#define?MD5_I(X,Y,Z)?(Y^(X|(~Z)))

#define?MD5_FF(a,b,c,d,Mj,s,ti)?a=b+MD5_ROTL((a+MD5_F(b,c,d)+Mj+ti),s)

#define?MD5_GG(a,b,c,d,Mj,s,ti)?a=b+MD5_ROTL((a+MD5_G(b,c,d)+Mj+ti),s)

#define?MD5_HH(a,b,c,d,Mj,s,ti)?a=b+MD5_ROTL((a+MD5_H(b,c,d)+Mj+ti),s)

#define?MD5_II(a,b,c,d,Mj,s,ti)?a=b+MD5_ROTL((a+MD5_I(b,c,d)+Mj+ti),s)

#define?MD5main?\

{MD5_FF(a,?b,?c,?d,?M[0],?7,?0xd76aa478);\

MD5_FF(d,?a,?b,?c,?M[1],?12,?0xe8c7b756);\

MD5_FF(c,?d,?a,?b,?M[2],?17,?0x242070db);\

MD5_FF(b,?c,?d,?a,?M[3],?22,?0xc1bdceee);\

MD5_FF(a,?b,?c,?d,?M[4],?7,?0xf57c0faf);\

MD5_FF(d,?a,?b,?c,?M[5],?12,?0x4787c62a);\

MD5_FF(c,?d,?a,?b,?M[6],?17,?0xa8304613);\

MD5_FF(b,?c,?d,?a,?M[7],?22,?0xfd469501);\

MD5_FF(a,?b,?c,?d,?M[8],?7,?0x698098d8);\

MD5_FF(d,?a,?b,?c,?M[9],?12,?0x8b44f7af);\

MD5_FF(c,?d,?a,?b,?M[10],?17,?0xffff5bb1);\

MD5_FF(b,?c,?d,?a,?M[11],?22,?0x895cd7be);\

MD5_FF(a,?b,?c,?d,?M[12],?7,?0x6b901122);\

MD5_FF(d,?a,?b,?c,?M[13],?12,?0xfd987193);\

MD5_FF(c,?d,?a,?b,?M[14],?17,?0xa679438e);\

MD5_FF(b,?c,?d,?a,?M[15],?22,?0x49b40821);\

MD5_GG(a,?b,?c,?d,?M[1],?5,?0xf61e2562);\

MD5_GG(d,?a,?b,?c,?M[6],?9,?0xc040b340);\

MD5_GG(c,?d,?a,?b,?M[11],?14,?0x265e5a51);\

MD5_GG(b,?c,?d,?a,?M[0],?20,?0xe9b6c7aa);\

MD5_GG(a,?b,?c,?d,?M[5],?5,?0xd62f105d);\

MD5_GG(d,?a,?b,?c,?M[10],?9,?0x02441453);\

MD5_GG(c,?d,?a,?b,?M[15],?14,?0xd8a1e681);\

MD5_GG(b,?c,?d,?a,?M[4],?20,?0xe7d3fbc8);\

MD5_GG(a,?b,?c,?d,?M[9],?5,?0x21e1cde6);\

MD5_GG(d,?a,?b,?c,?M[14],?9,?0xc33707d6);\

MD5_GG(c,?d,?a,?b,?M[3],?14,?0xf4d50d87);\

MD5_GG(b,?c,?d,?a,?M[8],?20,?0x455a14ed);\

MD5_GG(a,?b,?c,?d,?M[13],?5,?0xa9e3e905);\

MD5_GG(d,?a,?b,?c,?M[2],?9,?0xfcefa3f8);\

MD5_GG(c,?d,?a,?b,?M[7],?14,?0x676f02d9);\

MD5_GG(b,?c,?d,?a,?M[12],?20,?0x8d2a4c8a);\

MD5_HH(a,?b,?c,?d,?M[5],?4,?0xfffa3942);\

MD5_HH(d,?a,?b,?c,?M[8],?11,?0x8771f681);\

MD5_HH(c,?d,?a,?b,?M[11],?16,?0x6d9d6122);\

MD5_HH(b,?c,?d,?a,?M[14],?23,?0xfde5380c);\

MD5_HH(a,?b,?c,?d,?M[1],?4,?0xa4beea44);\

MD5_HH(d,?a,?b,?c,?M[4],?11,?0x4bdecfa9);\

MD5_HH(c,?d,?a,?b,?M[7],?16,?0xf6bb4b60);\

MD5_HH(b,?c,?d,?a,?M[10],?23,?0xbebfbc70);\

MD5_HH(a,?b,?c,?d,?M[13],?4,?0x289b7ec6);\

MD5_HH(d,?a,?b,?c,?M[0],?11,?0xeaa127fa);\

MD5_HH(c,?d,?a,?b,?M[3],?16,?0xd4ef3085);\

MD5_HH(b,?c,?d,?a,?M[6],?23,?0x04881d05);\

MD5_HH(a,?b,?c,?d,?M[9],?4,?0xd9d4d039);\

MD5_HH(d,?a,?b,?c,?M[12],?11,?0xe6db99e5);\

MD5_HH(c,?d,?a,?b,?M[15],?16,?0x1fa27cf8);\

MD5_HH(b,?c,?d,?a,?M[2],?23,?0xc4ac5665);\

MD5_II(a,?b,?c,?d,?M[0],?6,?0xf4292244);\

MD5_II(d,?a,?b,?c,?M[7],?10,?0x432aff97);\

MD5_II(c,?d,?a,?b,?M[14],?15,?0xab9423a7);\

MD5_II(b,?c,?d,?a,?M[5],?21,?0xfc93a039);\

MD5_II(a,?b,?c,?d,?M[12],?6,?0x655b59c3);\

MD5_II(d,?a,?b,?c,?M[3],?10,?0x8f0ccc92);\

MD5_II(c,?d,?a,?b,?M[10],?15,?0xffeff47d);\

MD5_II(b,?c,?d,?a,?M[1],?21,?0x85845dd1);\

MD5_II(a,?b,?c,?d,?M[8],?6,?0x6fa87e4f);\

MD5_II(d,?a,?b,?c,?M[15],?10,?0xfe2ce6e0);\

MD5_II(c,?d,?a,?b,?M[6],?15,?0xa3014314);\

MD5_II(b,?c,?d,?a,?M[13],?21,?0x4e0811a1);\

MD5_II(a,?b,?c,?d,?M[4],?6,?0xf7537e82);\

MD5_II(d,?a,?b,?c,?M[11],?10,?0xbd3af235);\

MD5_II(c,?d,?a,?b,?M[2],?15,?0x2ad7d2bb);\

MD5_II(b,?c,?d,?a,?M[9],?21,?0xeb86d391);\

A?=?a?+=?A,?B?=?b?+=?B,?C?=?c?+=?C,?D?=?d?+=?D;}

int?main(){

long?MD5_tmp;

extern?char*?StrMD5(const?char*?str,?long?length,?char*?md5){

/*

計算字符串MD5

參數說明:

str?????????字符串指針

length??????字符串長度

md5?????????用于保存MD5的字符串指針

返回值為參數md5

*/

char?*pp;

long?l,?i,?*M,?abcdtmp[4],?A,?B,?C,?D,?a,?b,?c,?d;

a?=?A?=?0x67452301,?b?=?B?=?0xEFCDAB89,?c?=?C?=?0x98BADCFE,?d?=?D?=?0x10325476;

l?=?length?+?((length?%?64?>?56)???(128?-?length?%?64)?:?(64?-?length?%?64));

if(!(pp?=?(char*)malloc((unsigned?long)l)))?return?0;

for?(i?=?0;?i?

for?(pp[i++]?=?128;?i?

*((long*)(pp?+?l?-?8))?=?length?<

for?(i?=?0;?i?

M?=?(long*)pp;

MD5main

}

free(pp);

abcdtmp[0]?=?a,?abcdtmp[1]?=?b,?abcdtmp[2]?=?c,?abcdtmp[3]?=?d;

for?(pp?=?(char*)abcdtmp,?i?=?0;?i?

return?md5;

}

extern?char*?FileMD5(const?char*?file,?char*?md5){

/*

計算文件MD5

參數說明:

file????????文件路徑字符串指針

md5?????????用于保存MD5的字符串指針

返回值為參數md5

*/

FILE*?fh;

char*?addlp;

long*?temp;

long?addlsize,?j,?M[16],?abcdtmp[4],?A,?B,?C,?D,?a,?b,?c,?d;

long?long?length,?i,?cpys;

void?*pp,?*ppend;

fh?=?fopen(file,?"rb");

fseek(fh,?0,?SEEK_END);

length?=?_ftelli64(fh);

a?=?A?=?0x67452301,?b?=?B?=?0xEFCDAB89,?c?=?C?=?0x98BADCFE,?d?=?D?=?0x10325476;

addlsize?=?(56?-?length?%?64?>?0)???(64)?:?(128);

if?(!(addlp?=?(char*)malloc(addlsize)))?return?0;

cpys?=?((length?-?(56?-?length?%?64))?>?0)???(length?-?length?%?64)?:?(0);

j?=?(long)(length?-?cpys);

fseek(fh,?-j,?SEEK_END);

fread(addlp,?1,?j,?fh);

for?(addlp[j++]?=?128;?j?

pp?=?addlp?+?addlsize?-?8;

*((long?long?*)pp)?=?length?<

for?(rewind(fh);?16?==?fread(M,?4,?16,?fh);)

MD5main

for?(temp?=?addlp,?ppend?=?addlp?+?addlsize;?temp?

for?(i?=?0;?i?

MD5main

}

free(addlp);fclose(fh);

abcdtmp[0]?=?a,?abcdtmp[1]?=?b,?abcdtmp[2]?=?c,?abcdtmp[3]?=?d;

for?(addlp?=?(char*)abcdtmp,?i?=?0;?i?

return?md5;

}

}

下面是報錯。

\Untitled1.c|80|error:?nested?function?'StrMD5'?declared?'extern'

\Untitled1.c|109|error:?nested?function?'FileMD5'?declared?'extern'

------解決思路----------------------

去掉extern聲明試試

總結

以上是生活随笔為你收集整理的c语言中entern int x y,关于extern和int main()的结构有关问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。