修复ms编译器C代码以在gcc中进行编译

伊戈里奥尼亚

您好,在15年前读了一本c和一本c ++书后,我对c / c ++语言有一些非常基本的了解。

大约在那个时候,在1998-9ish,我买了一本书“ 3D游戏编程的妖术,用c编写自己的高速3d多边形视频游戏”。出版商-韦特(Waite),作家-安德烈(Andre LaMothe)。它的位置很容易,因此您不必了解c就可以成为学习本书的先决条件。那时候我真的很想学习它,但是却参与了其他事情,并被其他项目分散了注意力。大约在那个时候,我发现了其他几种语言。我尝试过perl,真的很喜欢它。我很快就了解了它的基础知识,并用3个月+ 3个月的时间编写了我的第一个大型项目,并用perl对其进行了修复和微调。从那时起,我开始学习更多知识并改进perl,因此没有时间来学习c。

学习游戏和图形编程的愿望从未离开过我,因此,我决定回到那本游戏编程书中。我知道,您现在可以学习OpenGL或WebGL,但是在我看来,这本书有很多低层次的概念,如果您不学习,将不会像可能的那样成为游戏编程的好手,但是,本书要求您具有MS C / C ++ 7.0编译器。从那时起,我已经转移到linux(5年前)了,不想回到Windows。而且,无论我学到什么,我都希望它是跨平台的,所以我宁愿弄清楚如何修改本书的代码以在gcc中进行编译,然后在wine或Windows虚拟机中安装MS C / C ++ 7.0编译器。

在书里:

//input driven event loops

//includes
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void main(void){
    int done=0,
        number,
        num_tries=0,
        guess;

//removed far from the unsigned line, because compiler complains:
//error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
//      unsigned int far *clock = (unsigned int far *)0x0000046CL;  //clock pointer
        unsigned int *clock = (unsigned int *)0x0000046CL;  //clock pointer

        //section 1
        printf("\nI'm thinking of a number from 1-100.");
        printf("\nTry and guess it!\n");

        srand(*clock);
        number = 1 + rand() % 100;

        printf("test");
}

本书中的代码同上,不同之处在于注释的无符号行是原始行,但未注释的行被修改。更改无符号行后,它将使用gcc file_name.c进行编译,但是当编译后的二进制文件的执行到达srand行时,该程序将因分段错误而退出。我想,“远”事与ms编译器有关,也许整行都与获取时钟指针有关。关于如何解决该问题的任何建议?

更新:

好的,我知道时钟指针行在现代编程中是无用的,我应该使用time.h,因此我将时钟指针更改为time()函数。另外,如建议的那样,我已经将return和int添加到了main函数中。这是新的代码:

//input driven event loops

//includes
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

int main(void){
    int done=0,
        number,
        num_tries=0,
        guess;

    //section 1
    printf("\nI'm thinking of a number from 1-100.");
    printf("\nTry and guess it!\n");

    srand(time(NULL));
    number = 1 + rand() % 100;

    return(0);
}

现在工作正常,没有分段错误。谢谢你。

Yu Hao

far是非标准的C关键字。除非您确定需要它,否则请不要理会它。

从代码来看,这是一个简单的猜测数字游戏,clock应该为随机数生成器提供种子。0x0000046CL再次,是一些导致分段错误的不可移植代码。

为了简单起见,请使用当前时间作为种子。

srand(time(0)) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么需要传递两个编译器标志以在GCC中进行代码覆盖

来自分类Dev

使用GCC在C中进行函数重载-编译器警告

来自分类Dev

通过telnet修复C编译器

来自分类Dev

为什么我的GCC编译器不编译C代码?

来自分类Dev

在对代码进行性能分析时,应该使用匹配的(gcc)编译器优化标志吗?

来自分类Dev

C代码过于依赖编译器

来自分类Dev

用C ++编译器编译C代码

来自分类Dev

使用多个编译器编译C代码

来自分类Dev

编译C程序会在代码块中给出“在搜索路径中找不到编译器可执行文件(GNU GCC编译器)”

来自分类Dev

ms vc ++编译器可优化错误代码

来自分类Dev

g ++编译器是否与C ++的gcc编译器相同?(Mac OS X)

来自分类Dev

如何在使用CMake进行编译时修复“ CXX编译器的未知功能”(Linux Mint)

来自分类Dev

使用更新的gcc编译器从c ++切换到代码块,这会导致我的源代码中出现错误,这些错误已使用旧的gcc编译器v3很好地编译

来自分类Dev

gcc 是否有一个工具或编译器选项可以计算“编译的代码行数”?

来自分类Dev

在GCC编译器上使用C查找因素

来自分类Dev

安装GCC时使用C编译器!

来自分类Dev

C ++ gcc函数模板重载编译器问题

来自分类Dev

使用C语言的图形(GCC编译器)

来自分类Dev

将GCC设置为Clion C ++编译器

来自分类Dev

C++ MSVC/GCC/Clang 编译器错误

来自分类Dev

C#中的C / C ++代码编译器

来自分类Dev

如何修复istringstream编译器错误?

来自分类Dev

如何修复损坏的编译器?

来自分类Dev

如何安装MS C#6.0编译器?

来自分类Dev

GCC ARM C编译器不支持%llx printf格式代码的-std = c99

来自分类Dev

C#编译器会优化此代码吗?

来自分类Dev

检查由C ++编译器隐式生成的代码

来自分类Dev

C编译器会重复删除(合并)代码吗?

来自分类Dev

我如何“告诉” C编译器不应优化代码?

Related 相关文章

  1. 1

    为什么需要传递两个编译器标志以在GCC中进行代码覆盖

  2. 2

    使用GCC在C中进行函数重载-编译器警告

  3. 3

    通过telnet修复C编译器

  4. 4

    为什么我的GCC编译器不编译C代码?

  5. 5

    在对代码进行性能分析时,应该使用匹配的(gcc)编译器优化标志吗?

  6. 6

    C代码过于依赖编译器

  7. 7

    用C ++编译器编译C代码

  8. 8

    使用多个编译器编译C代码

  9. 9

    编译C程序会在代码块中给出“在搜索路径中找不到编译器可执行文件(GNU GCC编译器)”

  10. 10

    ms vc ++编译器可优化错误代码

  11. 11

    g ++编译器是否与C ++的gcc编译器相同?(Mac OS X)

  12. 12

    如何在使用CMake进行编译时修复“ CXX编译器的未知功能”(Linux Mint)

  13. 13

    使用更新的gcc编译器从c ++切换到代码块,这会导致我的源代码中出现错误,这些错误已使用旧的gcc编译器v3很好地编译

  14. 14

    gcc 是否有一个工具或编译器选项可以计算“编译的代码行数”?

  15. 15

    在GCC编译器上使用C查找因素

  16. 16

    安装GCC时使用C编译器!

  17. 17

    C ++ gcc函数模板重载编译器问题

  18. 18

    使用C语言的图形(GCC编译器)

  19. 19

    将GCC设置为Clion C ++编译器

  20. 20

    C++ MSVC/GCC/Clang 编译器错误

  21. 21

    C#中的C / C ++代码编译器

  22. 22

    如何修复istringstream编译器错误?

  23. 23

    如何修复损坏的编译器?

  24. 24

    如何安装MS C#6.0编译器?

  25. 25

    GCC ARM C编译器不支持%llx printf格式代码的-std = c99

  26. 26

    C#编译器会优化此代码吗?

  27. 27

    检查由C ++编译器隐式生成的代码

  28. 28

    C编译器会重复删除(合并)代码吗?

  29. 29

    我如何“告诉” C编译器不应优化代码?

热门标签

归档