为什么编译成功后执行c程序没有输出?

丁凯莉

我正在研究关于在 Ubuntu 系统上测量缓存大小的 ac 程序。我在 cache.c 中实现函数并在 main.c 文件中调用它们。一切正常。由于代码不会很长,为了方便修改代码,我将所有函数从cache.c移到main.c。

通过键入 gcc -o main main.c 编译主文件后,没有出现错误。然后我通过命令 ./main 执行程序。没发生什么事。我的程序有什么问题?

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define KB 1024
#define MB 1024 * 1024

int main (int argc, char ** argv[])
{
  static char arr[128 * 1024];
  unsigned int steps = 10000; //4 * 1024 * 1024;
  unsigned int size = sizeof(arr) / sizeof(char);
  clock_t start, end;
  double time_taken;

  // calculate the cache size
  void cache_size()
  { 
    for (int k = 8 * KB; k < size; k+= 8 * KB)
    {
      // count start time
      start = clock();

      for (int i = 0; i < steps; i++)
        for (int j = 0; j < k; j += 64)
          arr[j] = 1;

      // count end time
      end = clock();

      // calculate time taken
      time_taken = (double)(end - start) / CLOCKS_PER_SEC;

      printf("Test block: %d KB\tTime: %f secs\n", k / KB, time_taken);
    }

    printf("-----------------------------------------------\n");
  }
  return 0;
}  
灌木丛

你实际上并不是在打电话cache_size你在定义它。事实上,您正在使用特定于编译器的扩展,它允许在另一个内部定义一个函数。这不是一个好习惯。

将函数定义移到 之外main,然后从 内部调用它main

  static char arr[128 * 1024];
  unsigned int steps = 10000; //4 * 1024 * 1024;
  unsigned int size = sizeof(arr) / sizeof(char);
  clock_t start, end;
  double time_taken;

  // calculate the cache size
  void cache_size()
  { 
    for (int k = 8 * KB; k < size; k+= 8 * KB)
    {
      // count start time
      start = clock();

      for (int i = 0; i < steps; i++)
        for (int j = 0; j < k; j += 64)
          arr[j] = 1;

      // count end time
      end = clock();

      // calculate time taken
      time_taken = (double)(end - start) / CLOCKS_PER_SEC;

      printf("Test block: %d KB\tTime: %f secs\n", k / KB, time_taken);
    }

    printf("-----------------------------------------------\n");
  }

int main (int argc, char ** argv[])
{
    cache_size();
    return 0;
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

pip install 编译成功后执行导入报错

来自分类Dev

为什么我的 sass mixin 没有编译成 css?

来自分类Dev

TypeScript编译成功,但输出JS显示错误

来自分类Dev

为什么第二个示例编译成功

来自分类Dev

为什么从 Class[String] 到 Class[Any] 的类型转换编译成功?

来自分类Dev

为什么编译成 JavaScript 后 TypeScript 代码不再兼容了?

来自分类Dev

为什么在接口案例1抛出编译时错误,但在案例2个编译成功

来自分类Dev

为什么Java的编译成汇编两次?

来自分类Dev

Xampp/Php:扩展mysql没有编译成Php

来自分类Dev

Fody Costura 没有编译成 exe

来自分类Dev

将Makefiles转换为CMAKEList(编译成功,但是程序的行为有所不同)

来自分类Dev

Eigen 程序无法从 Visual Studio 编译,但从命令行编译成功

来自分类Dev

lambda被编译成什么类型?

来自分类Dev

LINQ实际编译成什么?

来自分类Dev

LINQ实际编译成什么?

来自分类Dev

gcc编译失败,但msc ++编译成功

来自分类Dev

gcc编译失败,但msc ++编译成功

来自分类Dev

C ++ Struct被编译成类了吗?

来自分类Dev

Oracle过程编译成功但显示错误

来自分类Dev

IntelliJ编译成功,但未生成签名的apk

来自分类Dev

蚂蚁Java任务编译成功,NoClassDefFoundError

来自分类Dev

即使编译成功也无法安装内核

来自分类Dev

链接脚本.lds文件无效,但编译成功

来自分类Dev

蚂蚁Java任务编译成功,出现NoClassDefFoundError

来自分类Dev

IntelliJ编译成功,但未生成签名的apk

来自分类Dev

gradle编译成功,但无法运行项目

来自分类Dev

Future 不会编译成功和失败

来自分类Dev

即使编译成功,也无法安装内核

来自分类Dev

Python tkinter-编译成功,但是作为Exe编译时程序运行不正确

Related 相关文章

热门标签

归档