小编Mik*_*ike的帖子

Makefile,头依赖项

假设我有一个带有规则的makefile

%.o: %.c
 gcc -Wall -Iinclude ...
Run Code Online (Sandbox Code Playgroud)

我想要在头文件更改时重建*.o.无论何时/include更改任何头文件,都必须重建dir中的所有对象,而不是计算出依赖项列表.

我想不出一个改变规则以适应这个的好方法,我愿意接受建议.如果标题列表不必硬编码,则奖励积分

dependencies makefile header-files

90
推荐指数
5
解决办法
10万
查看次数

Perl的打印如何在默认情况下添加换行符?

在Perl中,我的大多数print陈述都采用了这种形式

print "hello." . "\n";
Run Code Online (Sandbox Code Playgroud)

有没有一种很好的方法可以避免让所有讨厌的人"躺着"?

我知道我可以创建一个新的功能,例如myprint自动附加\n,但如果我可以覆盖现有的那么会很好print.

printing perl newline

89
推荐指数
6
解决办法
13万
查看次数

为什么Java有"无法访问的语句"编译器错误?

我经常发现在调试程序时,在代码块中插入一个return语句很方便(虽然可以说是不好的做法).我可能会在Java中尝试这样的东西....

class Test {
        public static void main(String args[]) {
                System.out.println("hello world");
                return;
                System.out.println("i think this line might cause a problem");
        }
}
Run Code Online (Sandbox Code Playgroud)

当然,这会产生编译器错误.

Test.java:7:无法访问的语句

我可以理解为什么警告可能是合理的,因为使用未使用的代码是不好的做法.但我不明白为什么这需要产生错误.

这只是Java试图成为一个保姆,还是有充分的理由使这成为编译器错误?

java language-design unreachable-statement

80
推荐指数
6
解决办法
10万
查看次数

指向成员函数的函数指针

我想将一个函数指针设置为一个类的成员,该类是指向同一个类中另一个函数的指针.我这样做的原因很复杂.

在这个例子中,我希望输出为"1"

class A {
public:
 int f();
 int (*x)();
}

int A::f() {
 return 1;
}


int main() {
 A a;
 a.x = a.f;
 printf("%d\n",a.x())
}
Run Code Online (Sandbox Code Playgroud)

但这在编译时失败了.为什么?

c++ oop function-pointers

78
推荐指数
5
解决办法
9万
查看次数

Java单元测试,目录布局

在为Java代码构建一套单元测试时,是否存在将测试代码放在与源代码相关的位置的约定?

例如,如果我有一个/java包含大量.java源文件的目录,那么将测试用例放在/java自身或使用类似的东西更好/java/test.

如果后者是首选,当类的private /protected成员在包外不可用时,如何测试代码的内部?

java unit-testing

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

Python unittest.TestCase执行顺序

Python中有没有办法unittest设置运行测试用例的顺序?

在我目前的TestCase课程中,一些测试用例具有副作用,为其他测试用例设置正常运行的条件.现在我意识到这样做的正确方法是使用setUp()所有设置实现的东西,但我想实现一个设计,其中每个连续的测试建立稍微更多的状态,下一个可以使用.我发现这更优雅.

class MyTest(TestCase):
  def test_setup(self):
   #do something
  def test_thing(self)
   #do something that depends on test_setup()
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望测试按照它们在课堂中出现的顺序运行.它们似乎按字母顺序运行.

python unit-testing

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

从C/C++代码中删除注释

有没有一种简单的方法可以从C/C++源文件中删除注释而无需进行任何预处理.(也就是说,我认为你可以使用gcc -E,但这会扩展宏.)我只想要删除注释的源代码,不应该改变任何其他内容.

编辑:

对现有工具的偏好.我不想用正则表达式自己写这个,我预见代码中有太多的惊喜.

c c++ comments

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

什么是Python中的'print'?

我理解是什么print,但语言元素的"类型"是什么?我认为这是一个功能,但为什么会失败?

>>> print print
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

不是print功能吗?不应该打印这样的东西吗?

>>> print print
<function print at ...>
Run Code Online (Sandbox Code Playgroud)

python

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

Java For-Each循环:排序顺序

java for-each循环是否保证如果在列表上调用元素将按顺序显示?在我的测试中似乎确实如此,但我似乎无法在任何文档中明确提到这一点

List<Integer> myList;// [1,2,3,4]
for (Integer i : myList) {
  System.out.println(i.intValue());
}

#output
1,2,3,4
Run Code Online (Sandbox Code Playgroud)

java syntax loops

47
推荐指数
3
解决办法
5万
查看次数

Java反思:为什么这么慢?

基于其缓慢的声誉,我总是避免使用Java反射.我在当前项目的设计中达到了一个重点,能够使用它会使我的代码更具可读性和优雅性,所以我决定试一试.

我对这种差异感到惊讶,有时候我注意到运行时间差了近100倍.即使在这个简单的例子中它只是实例化一个空类,它也令人难以置信.

class B {

}

public class Test {

    public static long timeDiff(long old) {
        return System.currentTimeMillis() - old;
    }

    public static void main(String args[]) throws Exception {

        long numTrials = (long) Math.pow(10, 7);

        long millis;

        millis = System.currentTimeMillis();

        for (int i=0; i<numTrials; i++) {
            new B();
        }
        System.out.println("Normal instaniation took: "
                 + timeDiff(millis) + "ms");

        millis = System.currentTimeMillis();

        Class<B> c = B.class;

        for (int i=0; i<numTrials; i++) {
            c.newInstance();
        }

        System.out.println("Reflecting instantiation took:" 
              + timeDiff(millis) + "ms");

    } …
Run Code Online (Sandbox Code Playgroud)

java reflection performance

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