#define STEUER_A_H {PWM_A_ON}

目錄

一、括號的區別

二、實例講解

三、注意事項

四、總結

五、補充


一、括號的區別

  1. 大括號?{}:

    • 在 C/C++ 中,大括號一般用于表示一個代碼塊或結構體、集合等。
    • 例如:
      • 用于定義函數體、控制結構(如?iffor)的代碼塊。
      • 用于初始化數組和結構體。
  2. 小括號?():

    • 小括號通常用于函數調用、表達式操作或者條件判斷。
    • 例如:
      • 在?if (condition)?中,小括號用來包圍條件表達式。

二、實例講解

???????在?#define STEUER_A_H {PWM_A_ON}?中,{}?的使用并不會與?if?語句中的小括號發生沖突。因為它們的作用域不同,分別處理不同的語法結構。這意味著在?if?語句中使用?STEUR_A_H?會將?{PWM_A_ON}?視為一個代碼塊,從而執行其中的內容。來看個例子:

if (condition) {  STEUER_A_H; // 變成了下面的代碼  {  PWM_A_ON; // 這里是一個獨立的代碼塊  }  
}  

完整示例:

#include <stdio.h>  
#include <stdbool.h>// 全局定義 PWM_A_ON 函數  
void PWM_A_ON() {  printf("PWM A is ON\n");  
}  #define STEUER_A_H {PWM_A_ON();} // 在宏中調用函數  void someFunction() {  if (true) {  // 在 C 語言中,true 通常用 1 表示  STEUER_A_H; // 這將被替換為 {PWM_A_ON();}  }  
}  int main() {  someFunction(); // 調用 someFunction  return 0;  
}   

?替換完成:

if (true) {  {  // 開始一個塊  PWM_A_ON(); // 這是一個函數調用,實際上不會有額外的塊定義  } // 結束塊  
}  

三、注意事項

  • 當使用?{}?定義宏并在?if?語句中使用時,需要注意語法上是否合理。如果?PWM_A_ON?是一個有效的語句(如一個語句或塊),那么這樣使用是完全可以的。
  • 如果你要在一個if中執行多個操作,使用這種方法會很方便,因為它實際上創建了一個獨立的代碼塊。

四、總結

???????所以,{}?括號與?if?語句中的小括號不會發生沖突,它們在語法上是分開的。

五、補充

???????當然,宏定義也可以用于表達式的替換,而不是函數調用。

示例代碼:

#include <stdio.h>  // 宏定義:計算平方  
#define SQUARE(x) ((x) * (x))  int main() {  int num = 5;  int result = SQUARE(num); // 宏將被替換為 ((num) * (num))  printf("The square of %d is %d\n", num, result); // 輸出結果  return 0;  
}  

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77009.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77009.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77009.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis 緩存—處理高并發問題

Redis的布隆過濾器、單線程架構、雙寫一致性、比較穿透、擊穿及雪崩、緩存更新方案及分布式鎖。 1 布隆過濾器 是一種高效的概率型數據結構&#xff0c;用于判斷元素是否存在。主要用于防止緩存穿透&#xff0c;通過攔截不存在的數據查詢&#xff0c;避免擊穿數據庫。 原理&…

【玩轉全棧】—— 無敵前端究極動態組件庫--Inspira UI

目錄 Inspira UI 介紹 配置環境 使用示例 效果&#xff1a; Inspira UI 學習視頻&#xff1a; 華麗優雅 | Inspira UI快速上手_嗶哩嗶哩_bilibili 官網&#xff1a;https://inspira-ui.com/ Inspira UI 介紹 Inspira UI 是一個設計精美、功能豐富的用戶界面庫&#xff0c;專為…

【OpenCV圖像處理實戰】從基礎操作到工業級應用

目錄 前言技術背景與價值當前技術痛點解決方案概述目標讀者說明 一、技術原理剖析核心概念圖解核心作用講解關鍵技術模塊說明技術選型對比 二、實戰演示環境配置要求核心代碼實現&#xff08;6個案例&#xff09;案例1&#xff1a;圖像基本操作案例2&#xff1a;邊緣檢測案例3&…

fastjson使用parseObject轉換成JSONObject出現將字符特殊字符解析解決

現象&#xff1a;將字符串的${TARGET_VALUE}轉換成NULL字符串了問題代碼&#xff1a; import com.alibaba.fastjson.JSON;JSONObject config JSON.parseObject(o.toString()); 解決方法&#xff1a; 1.更換fastjson版本 import com.alibaba.fastjson2.JSON;或者使用其他JS…

Docker Compose 和 Kubernetes(k8s)區別

前言&#xff1a;Docker Compose 和 Kubernetes&#xff08;k8s&#xff09;是容器化技術中兩個常用的工具&#xff0c;但它們的定位、功能和適用場景有顯著區別。以下是兩者的核心對比&#xff1a; ??1. 定位與目標?? ??特性?? ??Docker Compose?? ??Kubernet…

【21天學習打卡挑戰賽】如何學習WEB安全:逼自己在短時間掌握WEB安全核心內容

&#x1f36c; 博主介紹 &#x1f468;?&#x1f393; 博主介紹&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高興認識大家~ ?主攻領域&#xff1a;【滲透領域】【數據通信】 【通訊安全】 【web安全】【面試分析】 &#x1f389;點贊?評論?收藏 養成習…

Oracle數據庫巡檢腳本

1.查詢實例信息 SELECT INST_ID, INSTANCE_NAME, TO_CHAR(STARTUP_TIME, YYYY-MM-DD HH24:MI:SS) AS STARTUP_TIME FROM GV$INSTANCE ORDER BY INST_ID; 2.查看是否歸檔 archive log list 3.查看數據庫參數 SELECT NAME , TYPE , VALUE FROM V$PARAMETER ORDER BY NAME; 4.…

Windows 安裝 JDK

下載 Java8 的下載直接訪問&#xff1a;https://www.oracle.com/java/technologies/downloads/#java8-windows https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html 接受協議后點擊下載&#xff0c;再輸入賬號信息就可以下載了。 如果…

強化學習核心原理及數學框架

1. 定義與核心思想 強化學習&#xff08;Reinforcement Learning, RL&#xff09;是一種通過智能體&#xff08;Agent&#xff09;與環境&#xff08;Environment&#xff09;的持續交互來學習最優決策策略的機器學習范式。其核心特征為&#xff1a; ??試錯學習??&#x…

Netty前置基礎知識之BIO、NIO以及AIO理論詳細解析和實戰案例

前言 Netty是什么&#xff1f; Netty 是一個基于 Java 的 ?高性能異步事件驅動網絡應用框架&#xff0c;主要用于快速開發可維護的協議服務器和客戶端。它簡化了網絡編程的復雜性&#xff0c;特別適合構建需要處理海量并發連接、低延遲和高吞吐量的分布式系統。 1)Netty 是…

TIM輸入捕獲知識部分

越往左&#xff0c;頻率越高&#xff1b;越往右&#xff0c;頻率越低。【越緊湊&#xff0c;相同時間&#xff0c;次數越多】 計算頻率的方法&#xff1a;測評法、測周法、中界頻率。 頻率的定義&#xff1a;1s內出現了多少個重復的周期 測評法就是從頻率的定義出發的&#…

4.4 記憶機制與上下文管理:短期與長期記憶的設計與應用

記憶機制與上下文管理已成為智能代理&#xff08;Agent&#xff09;系統實現高效、智能化行為的核心技術。記憶機制通過短期記憶&#xff08;Short-Term Memory, STM&#xff09;和長期記憶&#xff08;Long-Term Memory, LTM&#xff09;支持Agent存儲、檢索和利用信息&#x…

深入了解遞歸、堆與棧:C#中的內存管理與函數調用

在編程中&#xff0c;理解如何有效地管理內存以及如何控制程序的執行流程是每個開發者必須掌握的基本概念。C#作為一種高級編程語言&#xff0c;其內存管理和函數調用機制包括遞歸、堆與棧。本文將詳細講解這三者的工作原理、用途以及它們在C#中的實現和應用。 1. 遞歸 (Recur…

leetcode day 35 01背包問題 416+1049

0-1背包問題 &#xff08;1&#xff09;第一種情況&#xff1a;二維dp[i][j]數組 dp[i][j]表示[0,i]的物品放入容量為j背包的最大價值 不放物品i,dp[i][j]dp[i-1][j] 放物品i,dp[i][j]dp[i-1][j-w[i]]v[i] 遞推公式為&#xff1a; dp[i][j]dp[i-1][j];//不放 if(w[i]<j)dp…

算法時代的“摩西十誡”:AI治理平臺重構數字戒律

一、引言 數字時代的狂飆突進中&#xff0c;人工智能&#xff08;AI&#xff09;正以顛覆性的力量重塑人類社會。從醫療診斷到金融決策&#xff0c;從智能制造到輿論傳播&#xff0c;AI的觸角已延伸至每個角落。 然而&#xff0c;斯坦福大學《2024年人工智能指數報告》揭示的…

上岸率85%+,25西電先進材料與納米科技學院(考研錄取情況)

1、先進材料與納米科技學院各個方向 2、先進材料與納米科技學院近三年復試分數線對比 學長、學姐分析 由表可看出&#xff1a; 1、材料科學與工程25年相較于24年上升10分&#xff0c;為290分 2、材料與化工&#xff08;專碩&#xff09;25年相較于24年下降20分&#xff0c;為…

Tomcat Web應用(Ubuntu 18.04.6 LTS)部署筆記

一、前言 本文與【MySQL 8&#xff08;Ubuntu 18.04.6 LTS&#xff09;安裝筆記】和【JDK&#xff08;Ubuntu 18.04.6 LTS&#xff09;安裝筆記】同批次&#xff1a;先搭建數據庫&#xff0c;再安裝JVM&#xff0c;后面就是部署Web應用&#xff1a;典型的單機部署。 ??本著善…

Datawhale AI春訓營——用AI幫助老人點餐

詳細內容見官網鏈接&#xff1a;用AI幫助老人點餐-活動詳情 | Datawhale

17.第二階段x64游戲實戰-人工遍歷二叉樹結構

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 本次游戲沒法給 內容參考于&#xff1a;微塵網絡安全 上一個內容&#xff1a;16.第二階段x64游戲實戰-分析二叉樹結構 上一個內容里把二叉樹的結構寫了寫&am…

Oracle 11g RAC ASM磁盤組剔盤、加盤實施過程

環境&#xff1a;AIX6.1 Oracle RAC 11.2.0.3 前期準備&#xff1a; 1.查看DG磁盤組空間情況&#xff1a; –查看DG磁盤組空間情況&#xff1a; ASMCMD> lsdg State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Of…