久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2347|回復: 9
收起左側

討論一個編程習慣的問題(關于宏定義)

[復制鏈接]
ID:401564 發表于 2022-8-31 00:42 | 顯示全部樓層 |閱讀模式
C語言也學了有快一年了,不算很會,但也算是已經入門了
有個問題一直搞不明白
我看了幾本書,書上都是推薦把宏定義放在.c文件中,然后,就開始說這樣做的各種優點什么的(PIC單片機除外)
甚至是專門一個文件來放宏定義的,估計是大程序用的吧,咱沒玩過
網上有說放頭文件的,也有說放源文件的
但我看了好幾個老外的程序,很多宏定義都是放在.h文件中,而且是包含來包含去的,半天才找著
像這樣的
#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK  (10)
然后,就在.c代碼中出現這樣的  USER_NUM_CTRL_TICKS_PER_TRAJ_TICK
我就在想,就讓老外來看,他也不一定能看明白 USER_NUM_CTRL_TICKS_PER_TRAJ_TICK 這是什么意思吧?
你們一般都是怎么處理的呢
回復

使用道具 舉報

ID:624769 發表于 2022-8-31 02:11 | 顯示全部樓層
目的來講,他應該不是為了隨便誰看一下就明白。目的是,當數值調整時, 只需要修改 #define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK  (10) 這一句,就可以從 -10 變成其它任何值,為不需要去代碼里面一個個改。
回復

使用道具 舉報

ID:123289 發表于 2022-8-31 08:38 | 顯示全部樓層
對于單個程序來說意義不大。
每個人有自己的習慣對一此東東進行命名、定義。對于一個程序也只用一次。
但你總不至于只寫一個程序吧。每次都重復勞動一次累。不如次習慣性的東東打個包,建個庫文件,以例每次調用。能做到這一點就可以了。不在乎你用什么方案。
例如。將常用的命名、定義做成一個通用包文件。將特殊命名、定義做成一個特有名稱包文件。
這樣通用包的使用效率就高了。
一句話,只要你認為方便,怎么做,你看了辦。
回復

使用道具 舉報

ID:883242 發表于 2022-8-31 10:17 | 顯示全部樓層
這有什么看不懂的?
回復

使用道具 舉報

ID:866313 發表于 2022-8-31 10:48 | 顯示全部樓層
宏的作用以及語法等可以看下這個專輯:為宏正名
回復

使用道具 舉報

ID:752974 發表于 2022-8-31 10:52 | 顯示全部樓層
C語言的宏定義功能是很強大的,使用宏定義的主要目的是:程序的可讀性好,方便移植,方便修改。
回復

使用道具 舉報

ID:689247 發表于 2022-8-31 11:10 | 顯示全部樓層
我自己的習慣是,單片機經常使用的宏定義會單獨創建一個define.h文件,里面包含開關串口等。一些外接設備例如oled,所使用的宏就寫在oled.h自己的頭文件中。
這樣也方便在移植外接設備的時候不用再添加。
單片機常用define頭文件
外接芯片頭文件
回復

使用道具 舉報

ID:689247 發表于 2022-8-31 11:15 | 顯示全部樓層
cpu小白白 發表于 2022-8-31 11:10
我自己的習慣是,單片機經常使用的宏定義會單獨創建一個define.h文件 ...

**************define頭文件**************
#ifndef _DEFINE_H
#define _DEFINE_H

#include "stm32f10x.h"

/********** System_Enable ********/
#define DBUG_ENABLE         1

/*
@ UART_PRINT_ENABLE 串口打印開關
@ 默認為串口1打印
# user_uart.h -> Gpio_Param 中修改或添加按鍵GPIO
*/
#define UART_PRINT_ENABLE  1
/*
@ KEY_ENABLE 按鍵使能開關
@ 定義為1后開啟按鍵功能
# 修改gpio:        define.h -> Gpio_Param 中修改或添加按鍵GPIO
#                         user_gpio.c -> GPIO_Init() 中修改或添加按鍵編號
# 添加按鍵功能:key.c -> Key_Value() 中修改或添加按鍵
*/
#define KEY_ENABLE                        0        

/*
@ I2C_ENABLE 按鍵使能開關
@ 定義為1后開啟I2C功能
# define.h -> Gpio_Param 中修改I2C使用GPIO
*/
#define I2C_ENABLE                        1        


**************外設ads1115頭文件************
#ifndef _ADS1115_H
#define        _ADS1115_H

#include "user_i2c.h"
#include "user_uart.h"
#include "variable.h"
#include "define.h"

#define CHANNEL_NUMBER        4
#define CHANNEL_BASE        0xc4e3

#define READ_ADS1115_TIME_INTERVAL 3
#define SEND_ADS1115_TIME_INTERVAL READ_ADS1115_TIME_INTERVAL*CHANNEL_NUMBER

                                                //單次 單通道   4.096  連續  860sps
#define CHANNEL_0 0xc4e3    // 1    100      001    0  111      0 0 011          //01
#define CHANNEL_1 0xd4e3    // 1    101      001    0  111      0 0 011         
#define CHANNEL_2 0xe4e3    // 1    110      001    0  111      0 0 011
#define CHANNEL_3 0xf4e3    // 1    111      001    0  111      0 0 011
                                           //010          2.048
回復

使用道具 舉報

ID:301191 發表于 2022-9-3 14:25 | 顯示全部樓層
頂一下
回復

使用道具 舉報

ID:47286 發表于 2022-9-21 13:02 | 顯示全部樓層
無所謂吧 自己喜歡怎么弄就怎么弄 中國不是有句老話叫 汝之良藥吾之某某么 別人好的東西不一定合適自己
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美三级电影在线播放 | 美国av毛片 | 在线看亚洲 | 欧产日产国产精品视频 | 成人黄色电影在线播放 | 色成人免费网站 | 中文字幕高清在线 | 亚洲区在线 | 伊人网综合 | 久久久久1 | 免费黄色特级片 | 国产精品欧美一区喷水 | 一区二区三区精品视频 | 99久久免费精品国产男女高不卡 | 国产精品一区二区三区在线 | 午夜视频在线免费观看 | 夜久久| 国产在线精品一区二区 | 中文字幕国产 | 先锋资源网 | 欧美性猛交一区二区三区精品 | 91豆花视频| 久久99精品视频 | 日韩1区 | 欧美激情一区二区三级高清视频 | 羞羞涩涩在线观看 | 91精品国产一区二区在线观看 | 欧美日产国产成人免费图片 | 精品国产一区久久 | 81精品国产乱码久久久久久 | 国产婷婷精品 | 欧美激情一区二区 | 亚洲精品在线视频 | 一级免费看片 | 日韩欧美亚洲一区 | 日韩久久久久久 | 97精品国产97久久久久久免费 | 久久99精品久久久久久国产越南 | 国产福利在线视频 | 午夜精品久久久久久久星辰影院 | 天堂av在线影院 |