Как я совместно использую переменные между различными.c файлами? [дубликат]

Я видел много людей, которые усложняли это, используя метод didSelectRowAtPath. Я использую Core Data в моем примере.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    //this solution is for using Core Data
    YourCDEntityName * value = (YourCDEntityName *)[[self fetchedResultsController] objectAtIndexPath: indexPath];

    YourSecondViewController * details = [self.storyboard instantiateViewControllerWithIdentifier:@"nameOfYourSecondVC"];//make sure in storyboards you give your second VC an identifier

    //Make sure you declare your value in the second view controller
    details.selectedValue = value;

    //Now that you have said to pass value all you need to do is change views
    [self.navigationController pushViewController: details animated:YES];

}

4 строки кода внутри метода, и все готово.

64
задан jalf 25 June 2009 в 18:49
поделиться

5 ответов

В fileA.c:

int myGlobal = 0;

В fileA.h

extern int myGlobal;

В fileB.c:

#include "fileA.h"
myGlobal = 1;

Вот как это работает:

  • переменная живет в fileA.c
  • fileA.h сообщает миру, что он существует и его тип ( int )
  • fileB.c включает fileA.h, чтобы компилятор знал о myGlobal до того, как fileB.c попытается используйте его.
125
ответ дан 24 November 2019 в 15:44
поделиться

если переменная:

int foo;

во втором объявленном вами файле C:

extern int foo;
10
ответ дан 24 November 2019 в 15:44
поделиться

Эти другие переменные должны быть объявлены общедоступными (используйте extern, public для C ++), и вам нужно будет включить этот файл .c. Однако я рекомендую создать соответствующие файлы .h для определения всех ваших переменных.

Например, для hello.c у вас будет hello.h, а hello.h будет хранить определения ваших переменных. Затем другой файл .c, такой как world.c, будет иметь этот фрагмент кода вверху:

#include "hello.h"

Это позволит world.c использовать переменные, которые определены в hello.h

Это немного сложнее, чем это, хотя . Вы можете использовать <> для включения файлов библиотеки, найденных в пути вашей ОС. Как новичок, я бы поместил все ваши файлы в одну папку и использовал синтаксис "".

3
ответ дан 24 November 2019 в 15:44
поделиться

Второй файл должен знать о существовании вашей переменной. Для этого вы снова объявляете переменную, но с ключевым словом extern перед ней. Это сообщает компилятору, что переменная доступна, но объявлена ​​где-то еще, что предотвращает ее создание (опять же, что может вызвать конфликты при компоновке). Хотя вы можете поместить объявление extern в сам файл C, это ' Общий стиль - иметь сопроводительный файл заголовка (например, .h ) для каждого файла .c , который предоставляет функции или переменные другим файлам, содержащим объявление extern . Таким образом вы избегаете копирования объявления extern , особенно если оно используется в нескольких других файлах. То же самое относится и к функциям, хотя вам не нужно для них ключевое слово extern .

Таким образом, у вас будет как минимум три файла: исходный файл, в котором объявляется переменная, и сопутствующий заголовок, объявление extern и второй исходный файл, который #include s заголовок, чтобы получить доступ к экспортируемой переменной (или любому другому символу, экспортированному в заголовке).

2
ответ дан 24 November 2019 в 15:44
поделиться
  1. Старайтесь избегать глобальных переменных. Если вам необходимо использовать глобальное значение, см. Другие ответы.
  2. Передайте его в качестве аргумента функции.
9
ответ дан 24 November 2019 в 15:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: