问题列表 - 第38339页

预处理器#if语句的工具/解析器?

我的工作包含许多预处理许多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)

假定#defineSwitch_TestMode是不等于Switch_TestModeON.

是否有工具(免费软件||低成本)可以完成这项工作?或者我是否必须为此编写自己的预处理器解析器?

(我不可能使用执行此工作的特殊参数来运行编译器,因为我们公司正在创建另一家公司正在编译的C源代码.)

谢谢你的提示!

问候

托马斯

c c++ parsing preprocessor

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

字符串作为主键?

我有这个数据库结构

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)

想法,建议任何人

mysql database database-design primary-key

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

无法执行编辑器

我不经常需要修改多个提交消息,但它已经发生过一次或两次,我不记得看到过这种情况.我希望别人有.当我git rebase -i HEAD~7,预期列表在vi中完全按预期打开.我将pick值更改为edit适当的值然后:wq.

结果: Could not execute editor

core.editor在我的全局设置.gitconfigvi(我也改成了vim在绝望的疯狂举动).我尝试过使用mate,但是甚至没有正确打开初始列表,所以我把它改回来了.

我正在使用v1.7.3并欢迎任何建议.

git vim

153
推荐指数
4
解决办法
4万
查看次数

活动开始时收到Intent.ACTION_HEADSET_PLUG

我正在尝试暂停拔下耳机时播放的音乐.

我创建了一个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)

android

13
推荐指数
1
解决办法
2万
查看次数

一次只允许用户选择一个 Checkbutton?

有没有办法只允许用户一次检查一组Checkbutton小部件中的一个Checkbutton小部件?我可以想象一些蛮力解决方案,但我正在寻找一些优雅的方法。

python tkinter

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

使JTextArea可滚动

我如何使以下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)

java scroll jtextarea

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

使用TeamCity构建和部署特定的修订号

我刚刚开始掌握TeamCity和MSDeploy,并且已经部署到由SVN提交触发的开发环境中工作得很好.我的问题是在释放到测试环境方面; 我希望根据需要并根据特定的修订号来执行此操作.基于用户定义的修订配置TeamCity构建的最佳方法是什么?

msbuild teamcity msdeploy

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

将周末排除在jQuery datepicker上可以点击

我想阻止用户在使用jQuery UI datepicker小部件选择日期时点击星期六/星期日(周末).

有没有办法实现这个目标?如果没有,哪些是替代方法来实现这一目标?

jquery jquery-ui uidatepicker jquery-ui-datepicker

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

jQuerys"hasClass"的反义词是什么?

目前我有一些代码可读

    if ( $(this).hasClass('.someclass') ) 
     { } 
     else {
     //Do Stuff here.
     }
Run Code Online (Sandbox Code Playgroud)

我知道这不是犹太洁食,但它确实有效.

什么是正确的方法来解决这个问题?我如何检查班级的挫折?

javascript css jquery

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

如何将整数钳位到某个范围?

我有以下代码:

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)

python clamp

81
推荐指数
8
解决办法
8万
查看次数