我正在用C语言编写Conway的生命游戏的一些实现.源代码分为三个文件:main.c
和functions.c
/ functions.h
,我在其中放置函数定义和声明.
现在,要创建一个单元格网格,我有一个这种类型的矩阵:
Cell grid[GRID_HEIGHT][GRID_WIDTH];
Run Code Online (Sandbox Code Playgroud)
where GRID_HEIGHT
和GRID_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++.我被要求重现一个无限循环,例如一个打印一系列权力的循环:
#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 ++进行编译.