欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2377|回復: 6
打印 上一主題 下一主題
收起左側

C語言能否根據需要臨時改變宏定義的內容?

[復制鏈接]
跳轉到指定樓層
樓主
ID:71233 發表于 2021-8-23 10:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
有關宏定義的語法,本人是小白,不知道能否實現下面的功能:根據需要來臨時改變宏定義的具體內容(引腳定義、#include等),模擬內容如下:
unsigned char X=1//選擇12
#if  X=1// 如果X=1,就執行下面宏定義
sbit K1=P3^3;
sbit K2=P3^4;
#define Pout P3  #include <1.h>
#elif  X=2// 如果X=2,就執行下面宏定義
sbit K1=P3^1;
sbit K2=P3^2;
#define Pout P1  
#include <2.h>
#endif
請高手們不吝賜教,謝謝!

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:47286 發表于 2021-8-23 11:05 | 只看該作者
這樣寫是可以 但只能在編譯前選擇 編譯后就固定了 不能在運行中再變化 而編譯前用 就沒必要用變量做1或2定義 直接defin=1or2就行 編譯器會自己去看

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:592807 發表于 2021-8-23 11:21 | 只看該作者

我知道你想表達啥,但是很遺憾,不能。這寫涉及到預處理問題,軟件在編譯過程中就必須要決定的東西是不能夠臨時改變的。把你要切換的1.h和2.h文件比作兩種背包一種是裝食物的食物包,一種是裝衣服的衣服包,你一定要在出門前(編譯前)決定用哪一種包,可以是一個包裝2種東西,也可以帶兩種包,但是出門后食物包不能變成衣服包。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:961867 發表于 2021-8-23 11:35 | 只看該作者
不行,宏定義是屬于編譯前就進行代碼字符串替換的。  不屬于編譯后的工作

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:878061 發表于 2021-8-23 12:22 | 只看該作者
為什么不自己親自試一下呢?
回復

使用道具 舉報

6#
ID:71233 發表于 2021-8-23 14:13 | 只看該作者
dzbj 發表于 2021-8-23 11:05
這樣寫是可以 但只能在編譯前選擇 編譯后就固定了 不能在運行中再變化 而編譯前用 就沒必要用變量做1或2定 ...

已經測試成功,就用你的這個方法,謝謝!
回復

使用道具 舉報

7#
ID:883242 發表于 2021-8-23 19:23 | 只看該作者
第一句就是錯的
unsigned char X=1;
必須寫成:
#define X 1
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表