導航:首頁 > 源碼編譯 > 用c編譯宏

用c編譯宏

發布時間:2022-03-08 13:07:22

『壹』 C語言宏定義 用條件編譯

條件編譯以及所有前面帶「#」的語句,是在編譯階段執行的語句,不會生成運行時的代碼。而你的y是在運行時才進行賦值的,所以是無法用條件編譯來實現的。
直接寫成條件語句就行:
{
if R
printf("%d是閏年\n",y);
else
printf("%d不是閏年\n",y);
}

『貳』 c語言中怎麼用命令提示窗口編譯宏定義並列印出來!請指教.謝謝了.

安裝 Visual Studio 後在開始菜單里找 Microsoft Visual C++ 命令提示符,打開後,用微軟的編譯器 cl 編譯,不是 cpp。

『叄』 如何在C語言中用宏來判斷當前編譯器

1、_MSC_VER 是微軟C/C++編譯器——cl.exe 編譯代碼時預定義的一個宏。需
要針對cl 編寫代碼時, 可以使用該宏進行條件編譯。
2、_MSC_VER 的值表示cl 的版本。需要針對cl 特定版本編寫代碼時, 也可以使用
該宏進行條件編譯。
3、_MSC_VER 的類型是"int",具體版本號定義如下:
MS VC++ 9.0 _MSC_VER = 1500
MS VC++ 8.0 _MSC_VER = 1400
MS VC++ 7.1 _MSC_VER = 1310
MS VC++ 7.0 _MSC_VER = 1300
MS VC++ 6.0 _MSC_VER = 1200
MS VC++ 5.0 _MSC_VER = 1100
其中MS VC++ 9.0 就是Visual C++ 2008,MS VC++ 8.0 就是Visual C++2005。
二、介紹預定義宏「__GNUC__」
1、__GNUC__ 是gcc 編譯器編譯代碼時預定義的一個宏。需要針對gcc 編寫代碼時,
可以使用該宏進行條件編譯。
2、__GNUC__ 的值表示gcc 的版本。需要針對gcc 特定版本編寫代碼時,也可以使
用該宏進行條件編譯。
3、__GNUC__ 的類型是「int」
三、預定義宏"__MINGW32__"
1、MinGW編譯器
四、symbian sdk 預定義宏:
symbian 平台,定義"__SYMBIAN32_"
3rd MR 版及之前的那個3rd 版本,定義"__SERIES60_30__"
3rd FP1 版,定義"__SERIES60_31__"
3rd FP2 版,定義"__SERIES60_32__"
另外,還有一個"__SERIES60_3x__"。若不需區分具體是哪一個3rd 版,則用之。

『肆』 C語言 宏

難道3不能是字元串嗎?

"3*pi"是字元串,"3"是它的子串。
"3*pi"宏展開後為"3*3.1415926"也是字元串,整個源程序都被認為字元串!

現在,還有有編譯,編譯時,編譯器會把3*3.1415926當表達式計算,用結果再替換一次!

『伍』 C語言宏定義編譯報錯

你把struct student用括弧括起來試試,即:
#define STU (struct student)

『陸』 C語言##宏的使用問題

#define PORT P1
#define zhantie(x,y) x##y
#define zaizhan(x,y) zhantie(x,y)
#define POUT zaizhan(PORT,OUT)

『柒』 c語言宏的使用問題

這個宏定義一個函數 S(r) ,其中 :
函數名:S
參數:r
函數內容: r*r

使用 S(a+b) , 就是把函數 S(r) 的函數內容中的參數 r, 用 a+b 替換,得到:a+b*a+b 。
因此, area=S(a+b) = a+b*a+b 。

其實這個例子是用來說明宏定義容易【出錯的】!函數 S 的本來目的是用來求平方的,
現在達不到預期的目的。正確的宏定義是:
#define S(r) (r)*(r)

『捌』 用c語言定義一個宏

這個要用到 三木運算,這樣代碼簡潔
#define INPUT_X_Y(x,y) ((x) * (y) < 100 )? (result = 1 ): (result = 0);
調用的時候輸入x 和 y 的值 ((x) * (y) < 100 )? (result = 1 ): (result = 0); 就是運算的式子 第一個表達式如果成立 執行?後面的 如果不成立 執行:後面的
最後如果有需要的話printf一下就行了

『玖』 C語言的編譯系統對宏命令的處理

前言:宏實質就是編譯器在對代碼進行編譯之前進行的一個「查找替換」工作,就跟你在處理文檔時用WPS/WORD/記事本等進行「查找替換」操作一樣。

C語言的編譯系統對宏命令的處理是()
A。在程序運行時進行的
B。在對源程序中其他成分正式編譯之前進行的
C。在程序連續時進行的
D。和C程序中的其他語句同時進行編譯

答:選B。在對源程序中其他成分正式編譯之前進行的

2,
#define N 2 /* 在預編譯時將用下面代碼中N替換成2 */
#define M N+1 /* 在預編譯時將M替換成N+1(即2+1,N會再被替換成2)*/
#define NUM 2*M+1 /* 如上:在預編譯時NUM替換成2*M+1,即2*N+1+1,即2*2+1+1*/
main()
{int i;
for(i=1;i<=NUM;i++)printf("%d\n",i);
/*
* 如上所述,上句展開為:for(i=1;i<=2*2+1+1;i++)printf("%d\n",i);
* 所以:循環將執行6次
*/
}

/* 切記注意:每一個宏百進行替換時只是替換「正文」中的內容,而不包括預編譯語句的內容, 否則就會像不少人理解的那樣,錯誤地認為第2個題中的循環將執行7次 */

『拾』 c語言宏定義如何用用宏定義有什麼優點

用#define 來定義,如#define Max 100
優點:在以後的程序中 要修改Max的大小 不用跑到程序中找 直接修改
#define Max 的大小即可。很方便。

閱讀全文

與用c編譯宏相關的資料

熱點內容
oppo如何關閉加密應用震動 瀏覽:798
直接拍PDF 瀏覽:578
伺服器有一個自動分配的ip地址嗎 瀏覽:466
程序員必備10個app 瀏覽:216
華強北耳機怎麼用安卓 瀏覽:970
現代數學pdf 瀏覽:674
基於單片機的倒車雷達 瀏覽:187
隨喵app怎麼樣 瀏覽:298
怎麼測試單片機速度 瀏覽:238
數控側銑頭m58編程原理 瀏覽:438
永劫無間伺服器炸了是什麼原因 瀏覽:221
fpga分區編程怎麼設置 瀏覽:135
ps圖片編譯好後在哪保存 瀏覽:5
易歷知食解壓後文件在哪 瀏覽:507
如何打造程序員 瀏覽:6
java圖片輸出流 瀏覽:921
foxmailrpc伺服器不可用怎麼辦 瀏覽:151
連接不到伺服器17是什麼意思 瀏覽:26
手機上怎麼通過郵箱發送文件夾 瀏覽:537
項目經理加密鎖怎麼登錄 瀏覽:593