小编Raj*_*Raj的帖子

gnu arm汇编程序命令行宏失败,".ifdef的标识符无效"

我的工具链是arm-gcc的最新版本.

我在汇编文件中有一段代码,必须有条件地包含/组装.

.ifdef MACRO_FROM_CMDLINE
 Assembly instr1
 Assembly instr2
.endif
Run Code Online (Sandbox Code Playgroud)

封装代码是最近添加的.

我试过了两个:

gcc -x assembler-with-cpp --defsym MACRO_FROM_CMDLINE=1 <along with other necessary options> 

gcc -x assembler-with-cpp -D MACRO_FROM_CMDLINE=1 <along with other necessary options>   
Run Code Online (Sandbox Code Playgroud)

-D在"无效标识符无效代码"和结果"无.endif注意.如果"错误.

--defsym在结果"MACRO_FROM_CMDLINE = 1:没有这样的文件或目录","无法识别的选项--defsym"的错误.

assembly gcc gnu-assembler

7
推荐指数
1
解决办法
6556
查看次数

XSLT将2个XML文件作为输入并生成输出XML文件

我试图根据决策xml文件(Input2)中可用的数据从主xml文件(Input1)生成输出XML文件.

主文件

<Level1>

 <Level2>
  <LinkedTo>DATA1</LinkedTo> <!DATA1 in the decision file>
  <Attribute1>1</Attribute1>
  <Attribute2>2</Attribute2>
 </Level2>

 <Level2>
  <LinkedTo>DATA2</LinkedTo>
  <Attribute1>3</Attribute1>
  <Attribute2>4</Attribute2>
 </Level2>

</Level1>
Run Code Online (Sandbox Code Playgroud)

决策文件:

<TopLevel>
 <DATA1>
  <Available>Y</Available>
 </DATA1>

 <DATA2>
  <Available>N</Available>
 </DATA2>

</TopLevel>
Run Code Online (Sandbox Code Playgroud)

处理时的XSLT必须输出结果文件(基于决策文件中的YES或NO).

<Level1>
 <Level2>
  <Attribute1>1</Attribute1>
  <Attribute2>2</Attribute2>
 </Level2>
</Level1>
Run Code Online (Sandbox Code Playgroud)

我必须承认我之前从未做过XML的事情,但这是可行性研究所必需的.什么应该在XSLT?我可以使用你的答案并扩展这个概念.

或者如果有替代方案(python,C#,C,C++等),也欢迎这些.我可以使用C/C++或任何面向过程的语言进行管理.

xml xslt xpath

4
推荐指数
1
解决办法
9171
查看次数

Perl:无法打开文件名作为参数传递的文件

我将两个文件名从DOS批处理文件传递给Perl脚本.

我的$ InputFileName = $ ARGV [0]; my $ OutputFileName = $ ARGV [1];

只有输入文件在物理上存在,而Outputfile必须由脚本创建.

open HANDLE, $OutputFileName or die $!;
open (HANDLE, ">$OutputFileName);
open HANDLE, ">$OutputFileName" or die $!;
Run Code Online (Sandbox Code Playgroud)

这三个都失败了.

但是以下工作正常.

open HANDLE, ">FileName.Txt" or die $!; 
Run Code Online (Sandbox Code Playgroud)

什么是正确的语法?

编辑:错误消息是:在行nn的Batchfile.pl没有这样的文件或目录

perl filenames parameter-passing

1
推荐指数
1
解决办法
6824
查看次数

如何将多个Perl单行合并到一个脚本中?

我想将几个单行内容移动到一个脚本中.

例如:

perl -i.bak -pE "s/String_ABC/String_XYZ/g" Cities.Txt
perl -i.bak -pE "s/Manhattan/New_England/g" Cities.Txt
Run Code Online (Sandbox Code Playgroud)

以上对我来说效果很好,但代价是两个磁盘I/O操作.

我想将上述逻辑移动到一个脚本中,以便所有替换都在文件打开和编辑一次的情况下完成.

编辑1:根据您的建议,我在一个脚本中编写了这个片段,当从Windows批处理文件调用时,它只是挂起:

#!/usr/bin/perl -i.bak -p Cities.Txt
use strict;
use warnings;

while( <> ){
s/String_ABC/String_XYZ/g;
s/Manhattan/New_England/g;
print;
}
Run Code Online (Sandbox Code Playgroud)

编辑2:好的,所以这是我实施你的建议的方式.奇迹般有效!

批处理文件:

perl -i.bal MyScript.pl Cities.Txt
Run Code Online (Sandbox Code Playgroud)

MyScript.pl

#!/usr/bin/perl
use strict;
use warnings;

while( <> ){
s/String_ABC/String_XYZ/g;
s/Manhattan/New_England/g;
print;
}
Run Code Online (Sandbox Code Playgroud)

非常感谢所有贡献的人.

string perl substitution

1
推荐指数
1
解决办法
1081
查看次数