❶ 條件編譯--標識符和宏標識符的問題
沒什麼區別,本質是一樣的
第二種應該是這樣的,你寫錯了
#ifndef 宏標識符
程序段1
#else
程序段2
#endif
❷ C語言宏定義 用條件編譯
條件
編譯以及所有前面帶「#」的語句,是在編譯
階段
執行的語句,不會生成
運行時
的
代碼
。而你的y是在運行時才進行賦值的,所以是無法用條件編譯來實現的。
直接寫成條件語句就行:
{
if
R
printf("%d是閏年\n",y);
else
printf("%d不是閏年\n",y);
}
❸ 宏函數里能包含條件編譯嗎
這個跟你是一樣的。
http://bbs.csdn.net/topics/90157313
還是用其他方法解決吧
❹ C語言中的條件編譯 #if define(宏名稱)為什麼錯誤了
預編譯指令格式錯誤。
#if define (IBMPC)應改為#ifdef IBMPC
這種結構是為了防止頭文件嵌套包含。一般的用法是
#ifndef _IBMPC_H
#define _IBMPC_H
#include"ibmpc.h"
....
#endif
❺ 如何在makefile中定義宏進行條件編譯
你可以藉助BASHSHELL強大的字元串處理能力來實現啊!
比如你可以將你想定義的「宏」放在makefile.include中,然後將其賦值,而在makefile中加入include makefile.include一行,在其後需要進行條件預編譯時進行字元串比較來實現啊!
❻ 「C語言的預處理 不能實現宏定義和條件編譯的功能」和「C語言的預處理不能實現宏定義和條件編譯的功能」
這兩句話是一個意思, C語言中的預處理,是可以實現宏定義和條件編譯功能的。比如下面的代碼定義了一個宏S,它的值是」hello world ",可以用printf函數直接列印出來。
#include<stdio.h>
#defineS"helloworld "
intmain()
{
printf(S);
return0;
}
C語言中的預處理也可以實現條件編譯功能,預處理到現在依然存在的一個重要原因就在於此。比如下面的代碼:
#include<stdio.h>
intmain()
{
#ifdef_DEBUG
printf("程序生成的debug版 ");
#else
printf("程序生成的是release版 ");
#endif
return0;
}
❼ C語言中宏定義、文件包含、條件編譯都不是C語言的語句嗎
這些都是預處理指令,會在編譯前由預處理器統一處理,正式編譯的時候,編譯器看不到這些內容,編譯器也不知道要怎樣處理它們。
C語言的語句是以分號結尾的,這些一般不以分號結尾,不能算語句。
❽ 宏定義裡面不能再包含條件編譯語句嗎
不可以
宏定義要求必須寫在一行
而條件編譯必須是獨立一行。
這兩個本身就是矛盾的
要條件編譯加宏定義, 只能是條件編譯在外層,宏定義在內層
比如
#include<stdio.h>
#ifdefTEST
#defineVALUE0
#else
#defineVALUE1
#endif
intmain()
{
printf("%d ",VALUE);
}
❾ C語言宏定義條件編譯問題2
看書看的挺仔細的,能在老譚的書上看到這些東西錯啦,首先你得大概知道什麼是Debug.編譯是可以選擇Debug和Release兩種不同的模式,(可以簡單的認為Debug就是為調試而生的,而調試完成之後發行版就是Release版本了.)Debug環境下生成的文件包含了很多的調試信息.因而運行的效率也比相對比較低下.
這下好說了.#ifdef DEBUG //如果定義了DEBUG (意思就是,如果在debug環境下就輸出 printf("x=%d,y=%d,z=%d\n",x,y,z);)
不懂再繼續最問.