[Linux][2012-08-28] c/cpp # 井号 双井号 的使用

STATA学习笔记:语法格式 STATA 语法格式 1.选项 sysuse nlsw88,clear 【注意】一个语句只能有一个裸露在外的逗号 #注意下面语句里的第二个逗号是在括号里,不算裸露在外 twoway line close date, title("收盘价", place(left)) 2. 变量引用 通配符:*,?,- #多个连续变量的两种引用方式 #方法1:一一列举 sum age race married never_married grade #方法2:写出首尾两个变量,中间以“-”连接 sum age-grade 阅读详情
在宏定义中经常会用到#和##
单井号(#)
把传递过来的参数当成字符串进行替代
如下示例:
#define display(name) printf(""#name"")
int main() {
  display(name);
}


输出:
name

说明:# 不可以 是第一个和最后一个, 所以 前后使用“”。



双井号(##)
称为连接符
在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串(变量或类型)。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在参考编译原理。

下面是MSDN上的一个例子。
假设程序中已经定义了这样一个带参数的宏:

#define paster( n ) printf( "token" #n " = %d", token##n )
//同时又定义了一个整形变量:
int token9 = 9;


现在在主程序中以下面的方式调用这个宏:
paster( 9 );

那么在编译时,上面的这句话被扩展为:
printf( "token" "9" " = %d", token9 );

注意到在这个例子中,paster(9);中的这个”9”被原封不动的当成了一个字符串,与”token”连接在了一起,从而成为了token9。而#n也被”9”所替代。

可想而知,上面程序运行的结果就是在屏幕上打印出token9=9

原文转自:http://www.delnabla.cn/article.asp?id=205

参考:http://thatax.blog.163.com/blog/static/20892680200882391827116/

【C语言】动态指定printf的输出字符宽度 目录快速答案详细讲解举个例子方法 及 代码参考资料 快速答案 使用星号占位符(*) printf("%*d", -4, "12"); // 或 printf("%-*d", 4, "12"); // 得到的输出:"12 " (12后面有两个空格) 详细讲解 举个例子 通常,我们为了保证输出格式美观,会使用下面的方式输出 #include <stdio.h> #define MAX_STR_NUM 3 #define MAX_STR_LEN 7 int main() { cha 阅读详情

相关推荐

Win11桌面图标小箭头去除与恢复:解决任务栏关联错误的完整指南

本文提供了一份完整的Win11桌面图标小箭头去除与恢复指南,重点解决了因错误方法导致的任务栏关联错误问题。通过分析注册表中IsShortcut键值与Shell Icons的原理,推荐安全的“替换图标资源法”,并提供了可一键执行的批处理脚本,确保在美化桌面的同时不影响系统功能与默认应用设置。

weixin_29288313的博客 945

#和##的用法

<br />单井号(#)<br />把传递过来的参数当成字符串进行替代<br />如下示例:<br />程序代码#define display(name) printf(""#name"")<br />int main() {<br />  display(name);<br />}<br />输出:<br />name<br /><br />双井号(##)<br />称为连接符<br />在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子

绿色心情的专栏 2977

C# WinForm项目目录结构详解:从入门到精通(附常见问题解决方案)

本文详细解析了C# WinForm项目目录结构,从解决方案与项目基础结构到核心文件功能,再到关键目录解析,帮助开发者快速掌握WinForm项目组织方式。文章还提供了常见问题解决方案,如引用丢失、配置文件不生效等,是WinForm开发从入门到精通的实用指南。

dream的博客 647

Stata:复合双引号在编程中的应用

全文阅读:Stata:复合双引号在编程中的应用| 连享会主页 目录 1. 简介 2. 何时需要使用复合双引号 3. 相关推文     1. 简介 在开始介绍双引号和复合双引号之前,我们先来认识一下暂元的引号使用。暂元的左右引号是由键盘上不同的键打出来的。其中,左边为 Esc 下方的那个键`。右边为 Enter 左侧的那个键'。下面是在循环语句中常见的例子。 *给变量名统一添加后缀 tmp sysuse auto.dta, clear foreach var of varlist...

Stata连享会 1403

LabVIEW与三菱PLC通讯实战:ActiveX控件在FX5U上的应用技巧

本文深入探讨了如何利用三菱MX Component中的ActiveX控件,在LabVIEW中实现与FX5U系列PLC的高效、稳定通讯。文章从环境配置、ActiveX控件生命周期管理、数据读写性能优化及容错机制等实战角度,分享了构建工业级健壮通讯程序的核心技巧与架构设计思路。

qsc9012345的博客 889

深入解析SSD报错“READ FPDMA QUEUED”:从诊断到修复全流程

本文深入解析了SSD报错“READ FPDMA QUEUED”的含义、成因与全流程解决方案。该错误通常指示硬盘硬件或健康状态问题。文章详细介绍了如何通过系统日志定位错误、解读关键的S.M.A.R.T.健康报告(重点关注重分配扇区计数等指标),并逐步进行硬件排查(如更换SATA数据线)、软件修复与数据抢救,最终指导用户根据诊断结果做出维修或更换SSD的决策。

weixin_29233333的博客 400

宏定义中的#,##,#@,\符号用法

1、字符串化操作符(#):给参数x加双引号 作用: 将宏定义中传入的参数名转换成用一对双引号括起来的字符串。其只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前。 用法: #define ToString(x) #x char* str = ToString(123132); // 就成了str="123132"; 2、连接操作符(##): 作用: 将两个参数按字面值连接成一个参数 用法: #define Conn(x,y) x##y int n = Conn(123,456); //

个人工作中学到的专业技术与职业发展知识笔记 5324

Zynq 双核AMP 通信

4、配置离线编译(这里不讲),配置linux的内核地址空间(0x4000_0000改为0x2000_0000),以及单核启动。CPU1设置为0x2000_0000~0x3FFF_FFFF(也可以小于0x3FFF_FFFF)如果禁用CPU1的L2 cache,在CPU1的bsp里面添加编译时候所需要的宏。3、配置工程,将vivado产生的.xsa文件复制到amp_com项目目录下。9、使用petalinux-package --boot 打包。一、vivado工程。5、编译u-boot。

y183128184的博客 1088

C语言#和##操作符使用方法

C语言#和##操作符使用方法一、总结       1、#操作符              1:#操作符用于预处理阶段,将宏参数转换为字符串,只有宏定义中使用(#define)                    使用方法:                    #define  STRING(x)   #x                   printf("%s\n",STRING(Hello...

liuchunjie11的博客 8069

超越音频!STM32 SAI接口在AD7768高速ADC采集中的妙用(含PCB布局指南)

本文深入探讨了如何将STM32的SAI接口应用于AD7768高速ADC的数据采集系统,超越了其传统的音频应用范畴。文章详细解析了SAI协议与ADC时序的匹配方法,提供了从CubeMX配置、DMA数据搬运到关键PCB布局指南的完整实战方案,旨在帮助工程师实现稳定、高精度的工业级高速数据采集。

efc12345678的博客 304

【机械臂视觉抓取从理论到实战】

首先声明一下,此项目是参考B站哈萨克斯坦UP的【机械臂视觉抓取从理论到实战】 此内容为他研究生生涯的阶段性成果展示和技术分享,所有数据和代码均开源。所以鹏鹏我特此来复现一下,我采用的硬件与之有所不同,UP主使用UR5,我实验室采用的是UR3,下面列出相关材料 UR3CB3.12:https://www.universal-robots.cn/cb3/ 【UR3系统升级到CB3.12附带URcap1.05】硬件支持代码支持 jacquard数据集:https://pan.baidu.com/s/1524HrV

vor234的博客 5189

C语言宏定义简要

C语言宏定义简要

HXY19的博客 476

2023华为od机试C卷【最富裕的小家庭】C++ 实现

在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。

MISAYAONE的博客 1239

c++宏定义和#,##以及宏定义中的双引号““

c++ 宏定义的时候,会用到#和##, 1.#:将宏定义中的符号转换成字符串,例如 宏定义 #define RegisterTest(featue,name) \ std::cout << #featue<< ":"<< #name<< std::endl; 调用 RegisterTest(a, b) 结果输出 a:b 2.##:拼接多个宏的符号,例如 宏定义 #define RegisterTest(featue,name) \ i.

xinnianhua555的专栏 3695

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C语言中单引号‘ ’与双引号“ ”的区别,带双引号的宏作为字符参数时需要注意的问题

C语言中在定义字符串时我们经常使用 char *str = "test"; 这里的"test"是一个常量字符串数组,将其赋值到str实际上是将"test"这个字符串数组的首地址赋给str。所以我们看到双引号括起来的字符串,可以直接将它看成一个地址。 而当我们定义一个字符时我们会使用 char c = 't' 这里的是将 't' 这个值赋赋值给c。c存储的值是 't' 这个具体...

HooY 5389

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

# 和 ## 的区别

# :1、最常见的是 #不会替换参数,只替换其所对应的字符 2、 把宏参数变成一个字符串; ## :把两个宏参数连接到一起(只能两个) #include <stdio.h> #include <stdlib.h> #define ONE 1 //1.最常见的是 #不会替换参数,只替换其所对应的字符; #define toString(str) #str //2.转字符串 #define hehe(x,y) x##y //连接 int ma...

枕上青灯竹书香的博客 3583

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

##(两个井号)和#(一个井号)都是什么意思

<br />连接符 ##(两个井号)<br />不知道什么符 #(一个井号)<br />## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在编译原理里有详尽的解释<br />#符是把传递过来的参数当成字符串进行替代。<br />假设程序中已经定义了这样一个带参数的宏:<br />#define PRINT( n ) printf( "toke

gc_1988220的专栏 2598

C语言宏定义##连接符和#符的使用

C语言宏定义##连接符和#符的使用  C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。 关于#和## 在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号。比如下

三多 718

stata几个常用命令

滞后一期 gen x=l.x smallpdf可以在线免费将可编辑的pdf转成Word 查找不到excel里面的值,格式也统一的 解决方案:空格替换 请检查数据前后是否存在无意义的空格,这将导致有空格和无空格的相同数据无法匹配。如“ 运营一部 ”和“运营一部”代表不同的数据。处理方式:查找和替换:查找:(输入一个空格)替换:(什么也不输入)全部替换。 --恢复...

weixin_30940783的博客 1554

c/c++中的宏

c/c++中宏的学习

StudyWinter的博客 1万+

常用Stata命令(持续更新中)

例如,province 是个体变量名, year是时点变量名 (注:在运行面板数据的相关命令前,要运行下列命令) 第一步: encode province, gen(id) #生成新变量ID(取值为1,2,3...)来替代province #若个体变量为1,2,3...整数,就无需使用encoder命令 第二步: xtset id year #本命令相当于告诉Stata, 该数据为面板数据 ......

zhanlang619的博客 1万+

SV宏定义中反斜杠(\),反引号(`),双反引号(``)的作用

反斜杠(\) 当一个宏定义有多行时,非末行的结尾要加上反斜杆,告知编译器,该宏还有下一行。在行尾的反斜杠之不能加空格或者字符,否则编译会报错。 反引号+双引号(`") 该符号的作用时把字符串中的宏都展开。 举例说明: `define def_A string1 `define def_B string2 `define def_C `"def_Adef_B`" 那把def_C展开就是string1 string2 双反引号(``) 它可以帮助编译器区分宏定义的字符,其分隔符标记作用。下.

re_call的博客 7485

C语言中的#和##表示的意义

前两天看到另外这么一道面试题:C语言中的#和##是用来干什么的? 通过查资料今天给大家说一下: 首先,我们平常在C语言中写的‘#’就是将其后面的宏参数变成一个字符串,而‘##’是将两个宏参数粘合在一起。具体使用看下面: #include <iostream> #include <stdio.h> using namespace std; #define Fin(...

gaorutao0923的博客 5227
上一篇: [Linux][2012-08-28] SHA 系列加密算法
下一篇: [Linux][2012-08-29] Linux 版本查看
qdylan
博客等级 码龄19年 2粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值