當前位置:首頁 » 編程軟體 » 條件預編譯練習

條件預編譯練習

發布時間: 2022-02-15 08:01:41

① 從思路開始 java如何實現條件編譯的技巧

條件編譯絕對是一個好東西。如在C或Cpp中,可以通過預處理語句來實現條件編譯。代碼如下:
#IFDEF DEBUG#UNDEF DEBUG#ENDIF #define DEBUG #IFDEF DEBUUG /* code block 1 */#ELSE /* code block 2 */#ENDIF


但是在JAVA中卻沒有預處理,宏定義這些東西,而有時我們可能需要條件編譯。那麼,在JAVA中,該如何實現條件編譯呢?
我們來看一個例子。
編寫一個helloworld程序。代碼如下:

public class Hello { public static void main(String[] args) { System.out.println("Hello, world!"); }}


保存為Hello.java並編譯,得到一個class文件,並且觀察到文件大小是417位元組。然後我們對這個文件進行反編譯,用jd-gui。得到代碼如下:

import java.io.PrintStream;public class Hello { public static void main(String[] paramArrayOfString) { System.out.println("Hello, world!"); }}


得到這個有什麼用呢?
現在我們再來對源代碼進行修改,修改後的代碼如下。

public class Hello { public static void main(String[] args) { if(false) { System.out.println("Hello, world!"); } }}

進行編譯,這時我們再看它的大小,只有255位元組。怎樣?想到什麼了吧?沒錯,編譯器會對代碼進行優化,對於條件永遠為false的語句,JAVA編譯器將不會對其生成位元組碼。

c語言中條件編譯的實例

條件編譯命令最常見的形式為:
#ifdef 標識符
程序段1
#else
程序段2
#endif
它的作用是:當標識符已經被定義過(一般是用#define命令定義),則對程序段1進行編譯,否則編譯程序段2。
其中#else部分也可以沒有,即:
#ifdef
程序段1
#endif
這里的「程序段」可以是語句組,也可以是命令行。這種條件編譯可以提高C源程序的通用性。如果一個C源程序在不同計算機系統上系統上運行,而不同的計算機又有一定的差異。例如,我們有一個數據類型,在Windows平台中,應該使用long類型表示,而在其他平台應該使用float表示,這樣往往需要對源程序作必要的修改,這就降低了程序的通用性。

③ 條件編譯,ifdef條件,ifndef條件的區別是什麼

一般情況下,源程序中所有行都參加編譯。但是有時希望程序中一部分內容只在滿足一定條件是才進行編譯,也就是對這一部分內容指定編譯的條件,也就出現了條件編譯.
#ifdef 和 #ifndef 用法及意義其實跟判斷語句if是一樣的
但使用if語句目標程序長,因為所有語句都要進行編譯,運行時間長,因為運行時要對if語句進行測試
,而採用條件編譯,就可以減少編譯語句,從而減少目標程序的長度,減少運行時間。

④ 條件編譯有哪幾種形式

#if NNN
statement1;
#elif MMM
statement2;
#else
statement3;
#endif

http://ke..com/view/1995627.htm

⑤ 條件編譯問題

if語句是確定要編譯的內容,在運行時判斷,比如:
if(a>b)
printf("A大於B");
else
printf("A小於B");

條件編譯可不是在運行階段執行的,是為了某種需要(特別是跨平台的需要),只在編譯器掃描源代碼時,確定用哪一部分。

舉個例子,比如,一般LINUX多線程程序叫做pthread_create,而WINDOWS啟動多線程的程序是CreateThread,為了保證同一個程序可以跨平台運行,我們這樣書寫程序:
#ifdef WIN32 //如果是WINDOWS系統
#include <windows.h>
#define THREAD CreateThread
#else //如果是LINUX系統
#include <pthread.h>
#define THREAD pthread_create
#endif

資料庫預編譯語句in(查詢條件),如果查詢條件只有一個,可以運行,如果多個條件,則不能運行,為什麼

你這個是把usercode的值作為變數給了語句里的?

這時候就有個問題
你的userCode是string類型的數組吧。。。
那麼傳進去的應該是'10086','10087'

如果不是這個問題你就在執行SQL語句之前先輸出一下語句 日誌里看看是哪裡格式不對了

⑦ C語言預編譯,條件編譯問題

不可以。條件編譯的條件必須是在程序運行之前就知道值的,這樣才能把你的代碼根據情況編譯為不同的程序。這里的函數參數在運行前不知道值,因此無法使用條件編譯。

⑧ 什麼條件下使用條件預編譯

使用這個東西的話,只要你想使用這個東西就可以使用了,這個的話倒是沒有什麼特別的限制的

⑨ 一道c語言試題(條件編譯)

你想一下 在宏替換之後程序變為
#include <stdio.h>
void main()
{
int a[5],m,*p=a;
while(p<a+N)
scanf("%d",p++);
p=a;
#if YES==NO
m=*p;
while(++p<a+5) {if(m<*p) m=*p;}
printf(" max=%d\n",m);

#else
m=*p;
while(++p<a+N) {if(m>*p) m=*p;}
printf(" min=%d\n ",m);
#endif
}
這里的YES==NO是什麼意思? 你見過這樣的表達式么?
給你修改一下,這樣就是求最小值了
#define N 5
#define YES 1
#define NO 0
#define DEBUG YES
#include <stdio.h>
void main()
{
int a[N],m,*p=a;
while(p<a+N)
scanf("%d",p++);
p=a;
#if DEBUG==NO
m=*p;
while(++p<a+N) {if(m<*p) m=*p;}
printf(" max=%d\n",m);

#else
m=*p;
while(++p<a+N) {if(m>*p) m=*p;}
printf(" min=%d\n ",m);
#endif
}

⑩ 如何實現條件編譯

插入預編譯宏命令,例如:

// 宏 條件
#ifdef __APPLE__
// 這里編譯 蘋果 的
#else
// 這里編譯 其它 的
#endif

熱點內容
android圖片顏色 發布:2025-01-13 15:26:09 瀏覽:268
國家稅務總局電腦伺服器 發布:2025-01-13 15:10:24 瀏覽:596
金立老款機的開機密碼是多少 發布:2025-01-13 15:04:45 瀏覽:456
湖南網上辦稅初始密碼多少 發布:2025-01-13 15:02:49 瀏覽:417
怎麼使用筆記本連接伺服器 發布:2025-01-13 15:02:48 瀏覽:705
長城cs75plus選哪個配置 發布:2025-01-13 14:54:05 瀏覽:22
php與大象 發布:2025-01-13 14:48:34 瀏覽:344
linux編輯器下載 發布:2025-01-13 14:47:01 瀏覽:737
如何清理qq存儲空間vivo 發布:2025-01-13 14:35:28 瀏覽:364
存儲部件是 發布:2025-01-13 14:35:26 瀏覽:190