Какой макрос для переноса специфичного для Mac OS X кода в C / C ++

Используйте этот код. Это работает как чемпион.

Process process = new Process();
process.StartInfo.UseShellExecute = true;
process.StartInfo.FileName = outputPdfFile;
process.Start();
38
задан mloskot 30 January 2010 в 01:46
поделиться

3 ответа

Краткий ответ: Список . Вы можете найти документы здесь .

-121--2392173-

Все зависит.

каждый макрос указывает что-то другое в значении.
См.: https://developer.apple.com/library/mac/documentation/porting/coneptual/portingUnix/compiling/compiling.html#//apple_ref/doc/uid/tp40002850-sw13

__apple__

Этот макрос определяется в любом Apple Computer.

__ Apple_cc __

Этот макрос установлен на целое число, которое представляет номер версии компилятор. Это позволяет вы отличать, например, между компиляторами На основании той же версии GCC, но с различными исправлениями ошибок или функциями. Большие значения обозначают более поздние компиляторы.

___ osx __

Предположительно, ОС - это определенный вариант ОС X

, поэтому приведенные вышеуказанные определения, которые я бы использовал __ Apple __ , чтобы отличить конкретный код Apple.

23
ответ дан 27 November 2019 в 01:53
поделиться

Раньше был интерфейс JavaScript navigator.cookeyEnabled , но сегодня браузеры имеют гораздо более широкий диапазон элементов управления cookie, чем только «enabled »/« disabled», включая параметры сеанса/персистенции, настройки и P3P, специфичные для сайта. Так что нюхать это свойство сейчас бесполезно.

Нет, единственный надежный способ узнать, можете ли вы установить cookie, это попытаться установить его, и посмотреть, есть ли он еще там. Другая морщина заключается в том, что в то время как многие браузеры понизят постоянный cookie-файл до сессионного cookie-файла, когда контроль частной жизни пользователя не позволяет им, IE не будет.

Если вы попытаетесь установить постоянный cookie-файл в IE, когда они отключены, cookie-файл просто будет выброшен на пол. Это может вас поймать, если вы используете простой сеанс проверки cookie, найти cookie включены, а затем попытаться установить постоянный cookie. И вам не сойдет с рук попытка установить как сеанс cookie и постоянный cookie, потому что при установке постоянного cookie в IE с отключенными постоянными cookie он даже удаляет существующий сеанс cookie с тем же именем. О, ИЭ!

Поэтому, если вам нужно установить постоянный cookie, но сделать с сеансом, где постоянный недоступен, вы должны использовать это сначала, чтобы узнать, что вы можете сделать:

// Find out what cookies are supported. Returns:
// null - no cookies
// false - only session cookies are allowed
// true - session cookies and persistent cookies are allowed
// (though the persistent cookies might not actually be persistent, if the user has set
// them to expire on browser exit)
//
function getCookieSupport() {
    var persist= true;
    do {
        var c= 'gCStest='+Math.floor(Math.random()*100000000);
        document.cookie= persist? c+';expires=Tue, 01-Jan-2030 00:00:00 GMT' : c;
        if (document.cookie.indexOf(c)!==-1) {
            document.cookie= c+';expires=Sat, 01-Jan-2000 00:00:00 GMT';
            return persist;
        }
    } while (!(persist= !persist));
    return null;
}
-121--2786215-

Я борюсь за доказательства, но я почти уверен, что помню, что вне браузера использует механизм Internet Explorer.

EDIT

Эта запись укрепляет мою память.

И эта статья подразумевает то же самое, если вы перейдете в раздел «Обнаружение сетевых подключений и состояния вне браузера» и прочитаете заключительный параграф, начинающийся «Вы можете использовать локальные сообщения для связи между»....

-121--3404145-

Обычно для этого используется __ MACH __ . Он был определен с самой ранней версии OS X (и даже раньше, предположительно).

4
ответ дан 27 November 2019 в 01:53
поделиться

Поля - единственное место, где можно хранить состояние. Свойства на самом деле являются всего лишь парой методов со специальным синтаксисом, который позволяет им быть сопоставленными с методом get или set в зависимости от того, как они используются: если свойство изменяет или обращается к состоянию, это состояние все равно должно храниться в поле.

Поля не всегда отображаются. С автоматическими свойствами C # 3 поле создается для вас компилятором. Но он все еще там. Кроме того, автоматические свойства имеют некоторые существенные ограничения (например, нет поддержки INotifyPropertyChanged, нет бизнес-логики в установщиках), которые означают, что они часто неуместны, и в любом случае необходимо создать явное поле и свойство, определенное вручную.

В соответствии с ответом Дэвида , вы правы, если говорите об API: вы почти никогда не хотите сделать внутреннее состояние (поля) частью API.

-121--1255492-

Краткий ответ: Список < T > . Документы можно найти здесь .

-121--2392173-

Вот хороший список макросов для операционных систем.

В Интернете содержится мало информации о __ OSX __ . Вы будете в безопасности с __ APPLE __ .

12
ответ дан 27 November 2019 в 01:53
поделиться