Почему все эти ошибки при создании этого C-проекта? - PullRequest
0 голосов
/ 14 марта 2012

Я пишу некоторые похожие программы на C как часть проекта XCode. Поскольку эта новая программа должна демонстрировать немного отличную функциональность от той, что была на первой рабочей итерации, я подумал, что цели лучше всего использовать.

Итак, я попытался создать новую цель и сделал это так, как мне показалось, правильным путем поиска гугл как (в XCode). Но при компиляции я получаю слишком много ошибок.

Вот экран ошибок, которые я получаю: enter image description here

Я вижу, что у него проблемы с загрузкой разных символов, поэтому я уверен, что это, вероятно, простая проблема, например, некоторые отсутствующие файлы. Но я не знал, что с Google, поэтому я надеюсь, что все в порядке, что я спрашиваю.

В связанной заметке кто-нибудь знает, почему моей первой версии программы, называемой main.c, не нужно было включать заголовочный файл, как это было выше?

Спасибо!

EDIT: Вот код из новой цели, который практически идентичен до сих пор неизменной первой версии программы:

/*
 *  ScalarProduct.c
 *  Concurrency_Practical1
 *
 *  Created by Chucky on 11/03/2012.
 *  Copyright 2012 __MyCompanyName__. All rights reserved.
 *
 */

#include "ScalarProduct.h"
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

//the final answer
int finalScalarProd;

//random variable
int rand_seed=10;

int rand()
{
    int n;
    n = random()%11;
    //printf("%d\n", n);
    return(n);
}

void* getScalarProduct(void *arg)
{
    //index for loop
    int i;

    //scalarProduct of 10 integers
    int * scalarProd = (int *) arg;

    //my two arrays
    int list1[10];
    int list2[10];

    for (i=0; i<10; i++) {
        list1[i] = rand();
        list2[i] = rand();
        *scalarProd += list1[i]*list2[i];
        printf("%d:\t\t %d\t\t %d\t\t %d\t\t\n", i, list1[i], list2[i], list1[i]*list2[i]);
    }
    return((void*)scalarProd);
}

int main (int argc, const char * argv[]) {
    // insert code here...

    pthread_t t1, t2;
    int sp1= 0, sp2 = 0;

    printf("Index\t List1\t List2\t Product\n\n");

    pthread_create( &t1, NULL, getScalarProduct, &sp1);
    pthread_create( &t2, NULL, getScalarProduct, &sp2);
    pthread_join( t1, NULL);
    pthread_join( t2, NULL);

    printf("\nScalar Products: %d %d\n", sp1, sp2);
    finalScalarProd = sp1 + sp2;


    printf("Result: %d\n", finalScalarProd);

    return 0;
}

Ответы [ 2 ]

0 голосов
/ 14 марта 2012

Ваш проект включает / импортирует AppKit-Header, который является ObjectiveC, а не чистым C.

Поскольку ваш источник цитирования не упоминает об этом, я бы поспорил, что он импортирован в предварительно скомпилированном заголовке. Проверьте предварительно скомпилированный заголовок вашего проекта для таких записей. Он будет назван так же, как ваш проект, с расширением .pch. Вы можете удалить любой импорт ObjectiveC.

Также проверьте, использовали ли вы какие-либо платформы ObjectiveC в вашем проекте. В случае сомнений удалите все перечисленные фреймворки из своего проекта.

0 голосов
/ 14 марта 2012

Из-за ошибок это выглядит так, как будто вы смешиваете заголовки Objective-C и компилируете с помощью компилятора C. Это все еще трудно сказать.

...