当前位置: 首页 > news >正文

php网站开发范例单页简洁手机网站模板

php网站开发范例,单页简洁手机网站模板,做搜索引擎的网站有哪些,服装公司名字大全一、c/c宏定义的来源 宏定义#xff0c;就是用一个标识符来表示一个字符串#xff0c;如果在后面的代码中出现了该标识符#xff0c;那么就全部替换成指定的字符串。通常c/c宏定义这几处出处#xff1a; 1#xff09;最常见的就是来自于开发者编码过程中采用宏定义命令“#…一、c/c宏定义的来源 宏定义就是用一个标识符来表示一个字符串如果在后面的代码中出现了该标识符那么就全部替换成指定的字符串。通常c/c宏定义这几处出处 1最常见的就是来自于开发者编码过程中采用宏定义命令“#define”来定义它是一种C语言预处理命令。 2) ANSI标准也自行提供了多个预定义的宏名例如__DATE__,__TIME__,__FILE__, __LINE__, __FUNCTION__等实际上也是采用“#define”来定义只是标准库已经定义并占据了这些命名开发者直接调用即可。 3另外编译器也会自带一些宏定义类似于WIN32 __LINUX__等另外开发者在编译过程中也可以通过配置文件、命令语句来传递宏定义参与编译。例如在makefile文件加入MYID:100,或在CMakeLists.txt 中加入“add_definitions( -DMYID)”又或在gcc指令中直接加入“ -DMYID”其实都可以看做是宏传递参与编译的一种。 二、宏定义应用 宏定义命令“#define”是c/c编程宏使用最多情况具体展开有很多细节内容但归根结底就两种用法带参数宏定义和不带参数宏定义。 不带参数宏定义格式# define 标识符 字符序列 例如 #define PI (3.1415926) //常量宏定义 又例如 //#define PYFREE 1 #define PYFREE //没给出字符序列也是可以的 又例如我们遇到最多的就头文件防止重复编译进行的宏定义 #ifndef _TEST__H_ //条件编译 #define _TEST__H_ //防止一个头文件被重复包含 //头文件内容 #endif //_TEST__H_ 带参数宏定义格式# define 标识符(参数表)  字符序列 注意宏调用时是以实参代换形参而不是“值传送”因此对于参数不要吝惜括号吧例如 #define CIRCLE_S(R) PI*(R)*(R) //带参宏定义 又例如参数还可以进行多重嵌套 #define SET_VAL(VARIABLE,VAL) ((VARIABLE) (VAL)) //设值 #define SET_CLASS_VAL(INSTANCE, SUB_VARIABLE,VAL) SET_VAL(INSTANCE-SUB_VARIABLE, VAL) //多重嵌套,类设值 另外通过#可以实现参数转字符串操作通过“##”可以实现宏参数粘合在一起 #define STR_TRAN(arg) #arg //#把宏参数arg变为一个字符串 //STR_TRAN(100)等同于100 #define CONS(a,b) STR_TRAN(a##b) //##把两个宏参数贴合在一起 //CONS(12,34) 等同于 1234 ANSI标准库预定义的宏名例如__DATE__,__TIME__,__FILE__, __LINE__, __FUNCTION__等可以在程序直接调用。例如结合“##”可以构造出类似printf函数类似的宏定义 //ANSI标准库自带的宏定义__DATE__,__TIME__,__FILE__, __LINE__, __FUNCTION__等 #define Print_INFO(log_fmt,...) \do{ \printf([%s %s][%s:%d][%s] \nlog_fmt\n,\__DATE__, __TIME__, __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__); \}while (0)//在main函数直接调用如下 Print_INFO(hi); //输出示例如下 //[Feb 10 2023 14:29:05][test.c:47][main] //hi 通过编译指令或工程配置文件传递进来参与编译的宏其使用和“#define”命令得到的宏是一致的例如 //gcc test.c -o test.exe -DGCC_CMD_DEF //传递宏定义GCC_CMD_DEF #ifdef GCC_CMD_DEF //条件编译 printf(GCC_CMD_DEF is define!\n); #endif又或 //gcc test.c -o test.exe -DGCC_CMD_DEF1 //传递宏定义GCC_CMD_DEF并指定字符序列 #if GCC_CMD_DEF //条件编译 printf(GCC_CMD_DEF is define!\n); #endif 三、宏定义应用测试案例 由于宏调用就是将宏名替换为字符串 掌握宏概念的关键是“换”并且这个“换”是在预处理预编译完成的因此准确理解宏调用语句之前就先要“换”再去阅读理解。 按上述涉及到宏应用知识点创建test.h/c源文件 test.h #ifndef _TEST__H_ //条件编译 #define _TEST__H_ //防止一个头文件被重复包含#define PI (3.1415926) //常量宏定义 #define CIRCLE_S(R) PI*(R)*(R) //带参宏定义#define SET_VAL(VARIABLE,VAL) ((VARIABLE) (VAL)) //设值 #define SET_CLASS_VAL(INSTANCE, SUB_VARIABLE,VAL) SET_VAL(INSTANCE-SUB_VARIABLE, VAL) //多重嵌套,类设值#define STR_TRAN(arg) #arg //#把宏参数arg变为一个字符串 #define CONS(a,b) STR_TRAN(a##b) //##把两个宏参数贴合在一起#define PYFREE //宏定义,用于条件编译 //ANSI标准库自带的宏定义__DATE__,__TIME__,__FILE__, __LINE__, __FUNCTION__等 #define Print_INFO(log_fmt,...) \do{ \printf([%s %s][%s:%d][%s] \nlog_fmt\n,__DATE__, __TIME__, __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__); \}while (0)// #ifdef WIN32 //条件编译 #pragma message(this is window platform) #else #pragma message(this is not window platform) #endif#endif //_TEST__H_test.c #include test.h //gcc test.c -o test.exetypedef struct Data_Test {char cVal;int iVal; }*pData,Data;int main(int argc, char* argv[]) {printf(hello,def test!\n);float r 2.0;printf(c2*PI*r%0.4f!\n,2*PI*r);printf(CIRCLE_S(r)%0.4f!\n,CIRCLE_S(r));pData pd;SET_CLASS_VAL(pd,iVal,10);printf(pd-iVal%d\n,pd-iVal);printf(STR_TRAN(val) is \%s\ \n,STR_TRAN(val));printf(CONS(a,b) is \%s\ \n,CONS(a,b));#ifdef PYFREE //已定义编译条件printf(PYFREE is be defined!\n); //执行#endif#if defined(PYFREE) //条件编译//想想#if PYFREE呢,为何其不能编译通过,如果“#defined PYFREE 1”呢有如何printf(PYFREE is really be defined!\n); //执行#endif #undef PYFREE //取消宏定义#ifdef PYFREEprintf(PYFREE is be defined!\n); //则不执行#endif#ifndef PYFREE //没定义编译条件,,#ifndef与#ifdef相反printf(PYFREE is not be defined!\n); //执行#endif#ifdef GCC_CMD_DEF //编译命令指定宏定义,gcc test.c -o test.exe -DGCC_CMD_DEFprintf(GCC_CMD_DEF is define!\n);#elseprintf(GCC_CMD_DEF is not define!\n); #endifPrint_INFO(hi,ANSI define!\n);return 0; } 通过gcc指令编译执行本文是win 系统下执行的gcc指令 或者建立Makefile文件添加如下内容 CX gGCC_CMD_DEF : 1 #宏定义 BIN : . TARGET : test.exe FLAGS : -staticInclude : . source : test.c $(TARGET) :$(CX) $(FLAGS) $(source) -I$(Include) -o $(BIN)/$(TARGET)clean:rm $(BIN)/$(TARGET) 编译及运行如下
http://www.w-s-a.com/news/996728/

相关文章:

  • 代码编辑器做热点什么网站好湛江网站建设哪家好
  • php网站开发概念网站开发岗位职责任职责格
  • asp 网站源码 下载西安自适应网站建设
  • 白领兼职做网站贵阳网站设计哪家好
  • 热水器网站建设 中企动力企业网站开发需要多钱
  • 北京市建设工程信息网交易网站静态网页模板免费下载网站
  • 福田欧曼服务站网站前台设计
  • 网站做系统叫什么软件吗注册域名需要实名认证吗
  • jsp网站开发教学视频ui设计风格
  • 注册网站建设开发怎么自己做导航网站
  • 设计做网站品牌咖啡主题网页界面设计
  • 个人网站制作总体设计宿迁房价2023年最新房价
  • 服装网站建设进度及实施过程马鞍山网站设计制作
  • 郑州网站优化顾问济宁网站制作
  • 网站开发简单吗网站引导页分为三个板块设计风格
  • 湖南做网站 在线磐石网络百度一下百度搜索
  • 现在建网站多少钱推广营销费
  • 联想企业网站建设的思路西安网站建设阳建
  • 网站内容 内链网站建设电话销售工作总结
  • 系统网站开发知名的摄影网站有哪些
  • 网站拍照的幕布扬中网站建设价位
  • 网站ie兼容性差西安小程序开发的公司
  • 上海网站建设培训app网站开发成本
  • 个人网站icp外贸网站开发 河南
  • 遵义建设网站无锡市规划建设局网站
  • 海外留学网站建设方案门户网站的发布特点
  • 网站建设不赚钱net112企业建站系统
  • 网站建设团队管理模板贵州省住房和城乡建设部网站
  • 曲沃网站建设网上学编程的有哪些比较好的网站
  • 厦门网站建设慕枫学做网站需要多久