小编Lub*_*los的帖子

编辑源文件时,'make'不会重新编译

我正在用C语言编写Conway的生命游戏的一些实现.源代码分为三个文件:main.cfunctions.c/ functions.h,我在其中放置函数定义和声明.

现在,要创建一个单元格网格,我有一个这种类型的矩阵:

Cell grid[GRID_HEIGHT][GRID_WIDTH];
Run Code Online (Sandbox Code Playgroud)

where GRID_HEIGHTGRID_WIDTH是常量定义在functions.h:

#define GRID_HEIGHT 10
#define GRID_WIDTH 10
Run Code Online (Sandbox Code Playgroud)

程序运行正常,使用make和Makefile编译.但问题是:如果我尝试更改,GRID_HEIGHT或者GRID_WIDTH当我再次运行我的Makefile时它会说所有文件都是最新的!我已经尝试使用良好的方式进行编译,gcc main.c etc.并且它应该运行.那么,为什么make不重新编译源代码呢?

这是我的Makefile:

CC = gcc
OBJECTS = main.o functions.o

Game\ of\ Life : $(OBJECTS)
    $(CC) $(OBJECTS) -o Game\ of\ Life -lncurses

%.o : %.c
    $(CC) -c $< 
Run Code Online (Sandbox Code Playgroud)

c makefile recompile

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

关于C++中Infinte Loop的问题

这是一种好奇心.

我正在学习C++.我被要求重现一个无限循环,例如一个打印一系列权力的循环:

#include <iostream>

int main()
{
    int powerOfTwo = 1; 

    while (true)
    {
        powerOfTwo *= 2;
        cout << powerOfTwo << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

结果有点困扰我.例如,使用Python解释器,我曾经得到一个有效的无限循环,每次迭代时都会打印2的幂(当然,直到IDE停止超过迭代的限制).使用这个C++程序,我得到一系列0.但是,如果我将其更改为有限循环,也就是说我只将条件语句更改为:

(powerOfTwo <= 100)
Run Code Online (Sandbox Code Playgroud)

代码运行良好,打印2,4,16,...,128.

所以我的问题是:为什么C++中的无限循环以这种方式工作?为什么它似乎根本不评估同时的身体?

编辑:我正在使用Code :: Blocks并使用g ++进行编译.

c++ infinite-loop

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

标签 统计

c ×1

c++ ×1

infinite-loop ×1

makefile ×1

recompile ×1