我的工具链是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"的错误.
我试图根据决策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++或任何面向过程的语言进行管理.
我将两个文件名从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 -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)
非常感谢所有贡献的人.