我的工作包含许多预处理许多C-的源文件#if,#elseif和#else报表.
这些陈述经常检查a #define,例如
#if(Switch_TestMode == Switch_TestModeON)
/* code 1 */
#else
/*code 2 */
#endif
Run Code Online (Sandbox Code Playgroud)
通常,这些预处理程序语句位于c-if语句中,这使得源代码对于人类来说几乎是不可读的.
#define用于此预处理程序#if语句的s 在额外文件中定义.
我现在的想法是有一个工具来检查这个#defined开关设置,然后只复制使用当前#define/switch设置应用的源代码行.
对于上面的例子,我想获得一个仅包含的新.c文件
/*code 2 */
Run Code Online (Sandbox Code Playgroud)
假定#define的Switch_TestMode是不等于Switch_TestModeON.
是否有工具(免费软件||低成本)可以完成这项工作?或者我是否必须为此编写自己的预处理器解析器?
(我不可能使用执行此工作的特殊参数来运行编译器,因为我们公司正在创建另一家公司正在编译的C源代码.)
谢谢你的提示!
问候
托马斯
我有这个数据库结构
CREATE TABLE `productinfo` (
`ProductID` int(11) NOT NULL AUTO_INCREMENT,
`ProductName` varchar(255) NOT NULL,
`ProductImage` varchar(255) NOT NULL,
`CategoryID` int(11) NOT NULL,
`SubCategoryID` int(11) NOT NULL,
`ProductBrief` varchar(255) NOT NULL,
`Features` text NOT NULL,
`Specifications` text NOT NULL,
`Reviews` text NOT NULL,
`Price` varchar(255) NOT NULL,
`Status` tinyint(4) NOT NULL,
PRIMARY KEY (`ProductID`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)
我现在需要将ProductID,CategoryID和SubCategoryID转换为Ps-5678这样的字符串作为部件号.ProductID是主键,因此如何更改数据库的结构.CategoryID和SubCategoryID是其他表中的主键,因此我如何处理它......就像转动一样容易
`ProductID` int(11) NOT NULL AUTO_INCREMENT
Run Code Online (Sandbox Code Playgroud)
变成一个字符串......并摆脱它
PRIMARY KEY (`ProductID`)
Run Code Online (Sandbox Code Playgroud)
想法,建议任何人
我不经常需要修改多个提交消息,但它已经发生过一次或两次,我不记得看到过这种情况.我希望别人有.当我git rebase -i HEAD~7,预期列表在vi中完全按预期打开.我将pick值更改为edit适当的值然后:wq.
结果: Could not execute editor
将core.editor在我的全局设置.gitconfig是vi(我也改成了vim在绝望的疯狂举动).我尝试过使用mate,但是甚至没有正确打开初始列表,所以我把它改回来了.
我正在使用v1.7.3并欢迎任何建议.
我正在尝试暂停拔下耳机时播放的音乐.
我创建了一个BroadcastReceiver,它侦听ACTION_HEADSET_PLUG意图,并在状态 extra为0(对于unplugged)时对它们进行操作.我的问题是,每当活动开始时,我的BroadcastReceiver都会收到ACTION_HEADSET_PLUG意图.这不是我期望的行为.我希望只有在插入耳机或拔下耳机时才会触发Intent.
有没有理由在使用该IntentFilter注册接收器后立即捕获ACTION_HEADSET_PLUG Intent?有没有明确的方法可以解决这个问题?
我认为,由于默认音乐播放器在拔下耳机时实现了类似的功能,因此可以实现.
我错过了什么?
这是注册码
registerReceiver(new HeadsetConnectionReceiver(),
new IntentFilter(Intent.ACTION_HEADSET_PLUG));
Run Code Online (Sandbox Code Playgroud)
这是HeadsetConnectionReceiver的定义
public class HeadsetConnectionReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Log.w(TAG, "ACTION_HEADSET_PLUG Intent received");
}
}
Run Code Online (Sandbox Code Playgroud) 有没有办法只允许用户一次检查一组Checkbutton小部件中的一个Checkbutton小部件?我可以想象一些蛮力解决方案,但我正在寻找一些优雅的方法。
我如何使以下JTextArea可滚动?
private JTextArea getJTextArea1() {
if (jTextArea1 == null) {
jTextArea1 = new JTextArea();
jTextArea1.setBounds(new Rectangle(225, 162, 68, 29));
jTextArea1.setText("text");
}
return jTextArea1;
}
Run Code Online (Sandbox Code Playgroud) 我刚刚开始掌握TeamCity和MSDeploy,并且已经部署到由SVN提交触发的开发环境中工作得很好.我的问题是在释放到测试环境方面; 我希望根据需要并根据特定的修订号来执行此操作.基于用户定义的修订配置TeamCity构建的最佳方法是什么?
我想阻止用户在使用jQuery UI datepicker小部件选择日期时点击星期六/星期日(周末).
有没有办法实现这个目标?如果没有,哪些是替代方法来实现这一目标?
目前我有一些代码可读
if ( $(this).hasClass('.someclass') )
{ }
else {
//Do Stuff here.
}
Run Code Online (Sandbox Code Playgroud)
我知道这不是犹太洁食,但它确实有效.
什么是正确的方法来解决这个问题?我如何检查班级的挫折?
我有以下代码:
new_index = index + offset
if new_index < 0:
new_index = 0
if new_index >= len(mylist):
new_index = len(mylist) - 1
return mylist[new_index]
Run Code Online (Sandbox Code Playgroud)
基本上,我计算一个新索引并使用它来从列表中查找一些元素.为了确保索引在列表的边界内,我需要将这两个if语句写成4行.那是相当冗长,有点难看......我敢说,这是非常不科幻的.
还有其他更简单,更紧凑的解决方案吗?(和更多pythonic)
是的,我知道我可以if else在一行中使用,但它不可读:
new_index = 0 if new_index < 0 else len(mylist) - 1 if new_index >= len(mylist) else new_index
Run Code Online (Sandbox Code Playgroud)
我也知道我可以链max()和min()在一起.它更紧凑,但我觉得它有点模糊,如果我输错了就更难找到错误.换句话说,我觉得这很简单.
new_index = max(0, min(new_index, len(mylist)-1))
Run Code Online (Sandbox Code Playgroud)