Если у меня есть файл C как ниже, между чем различие i
и j
?
#include <stdio.h>
#include <stdlib.h>
static int i;
int j;
int main ()
{
//Some implementation
}
i
имеет внутреннюю связь, поэтому вы не можете использовать имя i
в других исходных файлах (строго единицах перевода) для ссылки на тот же объект.
j
имеет внешнюю связь, поэтому вы можете использовать j
для ссылки на этот объект, если вы объявите его extern
в другой единице трансляции.
i
будет иметь статическую связь , т.е. переменная доступна только в текущем файле.
j
должен быть определен как extern
, то есть
extern int j;
в другом файле заголовка ( .h
), и тогда он будет иметь внешнюю связь , и к ним можно получить доступ через файлы.
i
не виден вне модуля; j
доступен глобально.
То есть, другой модуль, связанный с ним, может делать
extern int j;
и затем иметь возможность читать и записывать значение в j
. Тот же другой модуль не может получить доступ к i
, но может объявить свой собственный экземпляр, даже глобальный, который не будет виден первому модулю.
Известно, что в исходной реализации Java имеются некоторые ошибки, связанные с кодировкой файлов. Например, он не может правильно обрабатывать имена файлов с помощью umlauts.
StartZIP является альтернативой, которую мы использовали в нашем проекте: https://truezip.dev.java.net/ Проверьте документацию на сайте.
-121--4154775-DoModal блокируется. Вы должны создать диалог в куче или сделать его членом вашего класса (это важно), вызвать Create, а затем вызвать SunWindow.
-121--2498504- Разница заключается в том, что i
имеет внутреннюю связь, а j
имеет внешнюю связь. Это означает, что вы можете получить доступ к j
из других файлов, с которыми вы связываетесь, тогда как i
доступен только в том файле, где он объявлен.