首页
/
每日頭條
/
圖文
/
c語言指數常數的正确表示形式
c語言指數常數的正确表示形式
更新时间:2025-04-19 09:38:46

c語言指數常數的正确表示形式?visual C 編譯器在編譯函數時,會對函數名進行修飾,現在小編就來說說關于c語言指數常數的正确表示形式?下面内容希望能幫助到你,我們來一起看看吧!

c語言指數常數的正确表示形式(C語言基礎extern)1

c語言指數常數的正确表示形式

visual C 編譯器在編譯函數時,會對函數名進行修飾。

如果沒聽過函數名修飾,咱們先做個試驗,有個直觀的認識。

#include "stdafx.h"

extern void func(int a,int b,long c);

int main(int argc, char* argv[])

{

func(1,2,5);

printf("Hello World!\n");

return 0;

}

如以上代碼所示,func函數隻有聲明,沒有定義。 這個工程也之後這一個c文件。

我們編譯工程,得到如下錯誤。

error LNK2001: unresolved external symbol "void __cdecl func(int,int,long)" (?func@@YAXHHJ@Z)

無法解析的外部符号?func@@YAXHHJ@Z ,看到了嗎,func函數在後台的名字是?func@@YAXHHJ@Z

這就是對函數名的修飾。

為什麼是?func@@YAXHHJ@Z 這樣的呢?

函數名的修飾規則是:? 函數名 @@ 調用規則 返回值類型 參數類型 @Z

調用規則VC 包含三種:

1.__cdecl在修飾規則裡是YA,我們的例子中就是這種, ?func@@YAXHHJ@Z。

2.__stdcall在命令規則裡是YG 。

3.__fastcall在命令規則裡是YI。

這三種調用規則對于函數參數的傳遞方式和入棧順序也不同,我們以後在講。

返回值類型和參數類型如下:

X--void

D--char

E--unsigned char

F--short

H--int

I--unsigned int

J--long

K--unsigned long(DWORD)

M--float

N--double

_N--bool

U--struct

以上就是visual C 編譯器的函數修飾規則。确切的說是C 語言的修飾規則。

那麼 extern “C"是什麼呢?

這個符号是告訴編譯器,按C語言的修飾規則修飾。

我們加上“C",看看C語言的修飾規則是什麼樣的。

#include "stdafx.h"

extern "C" void func(int a,int b,long c);

int main(int argc, char* argv[])

{

func(1,2,5);

printf("Hello World!\n");

return 0;

}

編譯結果如下:

error LNK2001: unresolved external symbol _func

看到了嗎,C語言的規則就是簡單的在函數名前面,加了一個下劃線。

那麼我們為什麼要折騰函數名的修飾規則呢?有什麼用?

比如當你調用别人編譯的庫時,就需要知道對方是用什麼規則編譯的,你調用的時候也要用這種規則,不然就會提示“error LNK2001: unresolved external symbol XXXX” 這種錯誤。

當你編譯工程時,提示此錯誤,可以查查是不是函數修飾規則的問題。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
德語日常會話用語(德語學習我很性感)
德語日常會話用語(德語學習我很性感)
  Emil:Wo warst du? (你去哪了?)   Ich bin in die Toilette gegangen.:小明   Emil:Was zur Hölle?! (WTF?)   其實小明想說:Ich bin auf die Toilette gegangen. ——我剛去廁所了。。。   但是表達的實際意思卻是:我剛去了馬桶裡。     ...
2025-04-19
上海首套房契稅交多少錢(上海首套房契稅優惠繼續實施)
上海首套房契稅交多少錢(上海首套房契稅優惠繼續實施)
     9月1日起,《契稅法》正式施行。   關于之前的上海住房契稅優惠是否繼續?成為近期大家重點關注的話題。終于,财政部官網最新公告為我們揭開了這個答案。   8月30日,财政部稅政司網站發布了《關于契稅法實施後有關優惠政策銜接問題的公告》(财政部 稅務總局公告2021年第29号),《公告》明确了《中華人民共和國契稅法》實施後繼續執行的契稅優惠政策。  ...
2025-04-19
一拳十大最強s級英雄(新英雄協會12位S級解析)
一拳十大最強s級英雄(新英雄協會12位S級解析)
  關注ONE老師原作版一拳超人漫畫的小夥伴,想必對新英雄協會NEO并不陌生。作為英雄協會的對家,它不僅網羅了脫離英雄協會的原S級英雄,更有一些已出場人物的關系者包括在其中。本篇拾溜就來介紹将成為新英雄協會的12位S級英雄的強力角色,内容僅供參考。      殺手艾(殺し屋エー)   成為英雄之前,他是特A級懸賞犯,雖然相比S級的索尼克低一級,他仍擁有對于擊...
2025-04-19
那些年看過的超好看的泰劇(這些甜到令人心動的泰劇你看過嗎)
那些年看過的超好看的泰劇(這些甜到令人心動的泰劇你看過嗎)
  最近飯哥發現了一部高顔值的泰劇《逐月之月》,這部劇剛開始光看劇照就被男主的顔值迷得不要不要的~雙向暗戀的設定簡直太戳萌點了,現在隻更新到第二集,等待更新日子太難熬。同時呢,飯哥也整理了幾部同樣甜到令人心動的泰劇,和大家一起分享。   《逐月之月》   《逐月之月》根據泰國暢銷小說《Two Moons》改編,主要講述了一個理工學院院草暗戀校草學長的故事,由...
2025-04-19
上坂堇配音龍女(知名聲優上坂堇加入)
上坂堇配音龍女(知名聲優上坂堇加入)
  美食拟人手遊《食之契約》本周公開了全新飨靈角色,受到了玩家們的廣泛關注和轉發,特别還邀請了知名聲優上坂堇加入為它配音,讓我們來看看《食之契約》缇爾菈大陸的大陸中這次加入了什麼樣的新飨靈角色呢?   【祈願庇佑 禦節料理】      美味的禦節料理相當于是日本人的年夜飯,它會用多層的盒子裝置,每一層裝置的不同的食物擁有着不同的寓意。第一層主要會有一些象征喜...
2025-04-19
Copyright 2023-2025 - www.tftnews.com All Rights Reserved