Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 为什么没有可见的输出?_Xcode_Unix - Fatal编程技术网

Xcode 为什么没有可见的输出?

Xcode 为什么没有可见的输出?,xcode,unix,Xcode,Unix,更新1 好消息是,现在我通过更正对mat()的调用看到了输出,如下所示 然而,有一个问题是“问题” “问题”如下 Implicit declaration of function 'mat' is invalid in C99 // // main.m // MultRosetta // // Created by Brian Schott on 12/30/12. // Copyright (c) 2012 Brian Schott. All rights reserved. //

更新1

好消息是,现在我通过更正对
mat()
的调用看到了输出,如下所示

然而,有一个问题是“问题”

“问题”如下

Implicit declaration of function 'mat' is invalid in C99


//
//  main.m
//  MultRosetta
//
//  Created by Brian Schott on 12/30/12.
//  Copyright (c) 2012 Brian Schott. All rights reserved.
//

#import <Cocoa/Cocoa.h>
// #include "code.m"
/*
int main(int argc, char *argv[])
{
    int mat();
    return NSApplicationMain(argc, (const char **)argv);
}
*/


int main(int argc, const char * argv[])
{
    return( (int) mat() );
}
更新0

。在最初的问题中,我最终能够无错误地编译,但问题仍然存在

在下面的代码中,我看不到矩阵结果的任何输出

(代码与原始代码相比只做了轻微更改。根据建议,我在“inline”语句中添加了“static”,导入了两个Xcode内容,并将主函数名从“main()”更改为“mat()”,并从
main.m
调用了“mat()”)

#导入
#进口
#包括
#包括
/*使数据结构自包含。第i行和第j列的元素
是x[i*w+j]。不过,通常情况下,您可能想要
以其他方式表示矩阵*/
typedef结构{inth,w;double*x;}矩阵_t,*矩阵;
静态内联双点(双*a、双*b、整数长度、整数步长)
{
双r=0;
而(len--){
r++=*a++**b;
b+=阶跃;
}
返回r;
}
矩阵矩阵新(整数h,整数w)
{
矩阵r=malloc(矩阵)+sizeof(双)*w*h;
r->h=h,r->w=w;
r->x=(双*)(r+1);
返回r;
}
矩阵矩阵(矩阵a、矩阵b)
{
矩阵r;
双*p,*pa;
int i,j;
如果(a->w!=b->h)返回0;
r=新材料(a->h,b->w);
p=r->x;
对于(pa=a->x,i=0;ih;i++,pa+=a->w)
对于(j=0;jw;j++)
*p++=dot(pa,b->x+j,a->w,b->w);
返回r;
}
无效材料展示(矩阵a)
{
int i,j;
双*p=a->x;
对于(i=0;ih;i++,putchar('\n'))
对于(j=0;jw;j++)
printf(“\t%7.3f”,*p++);
putchar('\n');
}
int mat()
{
双da[]={1,1,1,1,
2, 4,  8,  16,
3, 9, 27,  81,
4,16, 64, 256   };
双分贝[]={4.0,-3.0,4.0/3,
-13.0/3, 19.0/4, -7.0/3,
3.0/2,   -2.0,  7.0/6,
-1.0/6,  1.0/4, -1.0/6};
矩阵a={4,4,da},b={4,3,db};
矩阵c=矩阵a和矩阵b;
/*mat_show(&a)、mat_show(&b)*/
mat_show(c);
/*免费(c)*/
//NSLog(@“这里有一些令人惊奇的文本!%@”,c);
返回0;
}

如果打开Xcode控制台,您应该能够看到此输出(在Xcode 4中,您可以这样做,(Shift+Command+C激活控制台,Shift+Command+Y切换查看和隐藏调试区域)

或者,您可以从命令行运行可执行文件(编译的二进制应用程序),并在那里看到输出

编辑:

这里是我的Xcode窗口的屏幕截图,您可以看到我制作了一个测试项目并将您的代码放入其中(假设您将其设置为“基础”命令行工具)

方法#1在Xcode窗口的“输出”部分演示

方法#2是“在Finder中显示”编译后的产品,然后将该应用程序拖放到终端窗口中,在显示路径后只需点击Return即可启动该应用程序

我刚刚意识到的另一个想法…可能是您的代码根本没有运行。为了运行您的代码,我必须将此函数添加到我的.m文件中:

int main(int argc, const char * argv[])
{
    return( mat() );
}

你在测试时真的调用了“
mat()
”函数吗?

为什么你认为这没有显示任何内容?编译和运行此代码会发出4行文本。在哪里?我看不到任何文本。它在自己的应用程序中生成一个窗口。我在控制台中看不到任何输出。它在哪里?你说,“我导入了两个Xcode东西”,但是你没有导入任何与Xcode相关的东西。你是说你导入了Cocoa东西吗?你应该澄清一下。Xcode只是一个开发环境,不是一种语言或编译器。Cocoa是Objective-C语言的框架,通常由gcc或clang编译。你在说什么?对不起,我猜这个词是Cocoa东西。但是,输出在哪里?我在Xcode控制台中看不到任何内容。请查看我编辑的问题以查看我的目录列表,并告诉我如何运行可执行文件。我没有看到可执行文件,除了在终端中键入可执行文件名外,我真的不知道如何运行可执行文件。请提供更多信息。答对了!我必须将您的代码添加到我的列表中.m文件。我已将修改后的.m文件显示为问题的更新。现在我只得到一个小“问题”如果您不介意的话,我想帮助您清理的消息。请参阅原始问题中的更新1。但主要问题已经解决,因为我看到了输出。另一个小问题是Xcode navigator,我的产品与您的不同。我的产品只是一个图形显示纸、铅笔、尺子和画笔。来自编译器警告“
函数'mat'的隐式声明在C99中无效,
”,听起来您所做的只是需要在.m文件(或者更好的是在.h文件中)的顶部声明一个函数。函数delcaration如下所示:“
int mat()
#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>
#include <stdio.h>
#include <stdlib.h>


/* Make the data structure self-contained.  Element at row i and col j
   is x[i * w + j].  More often than not, though,  you might want
   to represent a matrix some other way */
typedef struct { int h, w; double *x;} matrix_t, *matrix;

static inline double dot(double *a, double *b, int len, int step)
{
    double r = 0;
    while (len--) {
        r += *a++ * *b;
        b += step;
    }
    return r;
}

matrix mat_new(int h, int w)
{
    matrix r = malloc(sizeof(matrix) + sizeof(double) * w * h);
    r->h = h, r->w = w;
    r->x = (double*)(r + 1);
    return r;
}

matrix mat_mul(matrix a, matrix b)
{
    matrix r;
    double *p, *pa;
    int i, j;
    if (a->w != b->h) return 0;

    r = mat_new(a->h, b->w);
    p = r->x;
    for (pa = a->x, i = 0; i < a->h; i++, pa += a->w)
        for (j = 0; j < b->w; j++)
            *p++ = dot(pa, b->x + j, a->w, b->w);
    return r;
}

void mat_show(matrix a)
{
    int i, j;
    double *p = a->x;
    for (i = 0; i < a->h; i++, putchar('\n'))
        for (j = 0; j < a->w; j++)
            printf("\t%7.3f", *p++);
    putchar('\n');
}

int mat()
{

    double da[] = { 1, 1,  1,   1,
            2, 4,  8,  16,
            3, 9, 27,  81,
            4,16, 64, 256   };
    double db[] = {     4.0,   -3.0,  4.0/3,
            -13.0/3, 19.0/4, -7.0/3,
              3.0/2,   -2.0,  7.0/6,
             -1.0/6,  1.0/4, -1.0/6};

    matrix_t a = { 4, 4, da }, b = { 4, 3, db };
    matrix c = mat_mul(&a, &b);

    /* mat_show(&a), mat_show(&b); */
    mat_show(c);
    /* free(c) */
        // NSLog (@"Here is some amazing text! %@",c);
    return 0;
}
int main(int argc, const char * argv[])
{
    return( mat() );
}