由于makefile设置,头文件出现奇怪的C ++编译错误?

时间:2015-04-22 22:03:03

标签: c++ c++11 makefile

我在头文件中定义了以下内容:

some function ...
            if (table2[i] != ""){
                new_table2[hash2(table2[i])] = table2[i];       
                table2[i] = "";
                }       
            // std::cout << " first i : " << i  << "\n";
        }


        for (int i=0; i < 150; ++i){
            if (new_table1[i] != "" && !try_insert(new_table1[i])){
                std::cout << " bad rehash : " << i << " " << new_table1[i]  << "\n"; 
                rehash();
            }
        }

Makefile看起来像这样:

CC=g++
CFLAGS=-Wall -Wextra -O3.
DEPS = somehash.h hashfunctions.h 
OBJ = main.o

%.o: %.c $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)

main: $(OBJ)
    g++ -o $@ $^ $(CFLAGS)


.PHONY: clean

clean:
    rm -f *.o main 

在我做完干净,制作和./main之后,“第一个i”仍然打印出来,即使它被注释掉了。当我评论出“糟糕的重拍”时,它们都没有打印出来。似乎编译器做了一些自动优化,导致它被缓存?我该如何解决?

编辑:我在另一个编辑器中打开了文件(使用Sublime),问题就消失了。似乎问题是崇高的。

0 个答案:

没有答案