Вы можете использовать git rebase, например, если вы хотите изменить обратно для фиксации bbc643cd
, запустите
$ git rebase --interactive 'bbc643cd^'
В редакторе по умолчанию измените от pick
до edit
в строке чей коммит вы хотите изменить. Внесите свои изменения, а затем передайте их с тем же сообщением, которое вы имели до:
$ git commit --all --amend --no-edit
, чтобы изменить фиксацию, и после этого
$ git rebase --continue
, чтобы вернуться к предыдущей фиксации головы.
ПРЕДУПРЕЖДЕНИЕ : обратите внимание, что это изменит SHA-1 этого коммита , а также всех потомков - другими словами, это переписывает историю с этого момента. Вы можете разбить репо, выполнив это , если нажмете команду git push --force
Я думаю, что большинство рекомендаций по этому вопросу сосредоточено вокруг того факта, что C # - просто лучшая среда для создания приложений .NET, чем C ++ / CLI. Синтаксис чище, инструменты лучше - как в Visual Studio, так и от сторонних разработчиков. Вы получите более широкую и лучшую поддержку от разработчиков, которые почти все будут лучше знакомы с C #.
Приложения C ++ / CLI достаточно отличаются от стандартного C ++ со всеми этими символами ^ и%, которые я, по крайней мере, считаю, НЕ С ++.
. Большинство советов также исходит из того, что вы хотите создать приложение .NET, а C ++ / CLI используется скорее как связующий слой. Когда бы я ни использовал C ++ / CLI, я делал это неохотно и почти всегда, потому что в какой-то сторонней библиотеке было много сложных объектов C / C ++, которые она передавала. При использовании C # и P / Invoke, вам часто приходится создавать классы для отражения структур и классов, содержащихся в файлах заголовков C ++ программного обеспечения, с которым вы взаимодействуете. Синхронизировать их - дело трудоемкое, а ошибки легко сделать. Более того, выяснение того, как маршалировать структуру с указателями на структуры массивов структур, заставит ваш мозг расплавиться!
Мой общий совет - использовать C # (или VB.NET) для создания как можно большего количества кода для вашего приложения. Используйте P / Invoke, когда вам нужно вызвать Win32 API и / или сторонние SDK ограничены, а интерфейсы и параметры просты. Используйте C ++ / CLI в качестве связующего слоя, когда это невозможно.
В командной среде ваши коллеги-разработчики будут благодарить вас за ограничение вашего использования C ++ / CLI только там, где это абсолютно, безусловно необходимо. Опыт C ++ / CLI не так уж и распространен.
Синхронизировать их - дело трудоемкое, а ошибки легко сделать. Более того, выяснение того, как маршалировать структуру с указателями на структуры массивов структур, заставит ваш мозг расплавиться!Мой общий совет - использовать C # (или VB.NET) для создания как можно большего количества кода для вашего приложения. Используйте P / Invoke, когда вам нужно вызвать Win32 API и / или сторонние SDK ограничены, а интерфейсы и параметры просты. Используйте C ++ / CLI в качестве связующего слоя, когда это невозможно.
В командной среде ваши коллеги-разработчики будут благодарить вас за ограничение вашего использования C ++ / CLI только там, где это абсолютно, безусловно необходимо. Опыт C ++ / CLI не так уж и распространен.
Синхронизировать их - дело трудоемкое, а ошибки легко сделать. Более того, выяснение того, как маршалировать структуру с указателями на структуры массивов структур, заставит ваш мозг расплавиться!Мой общий совет - использовать C # (или VB.NET) для создания как можно большего количества кода для вашего приложения. Используйте P / Invoke, когда вам нужно вызвать Win32 API и / или сторонние SDK ограничены, а интерфейсы и параметры просты. Используйте C ++ / CLI в качестве связующего слоя, когда это невозможно.
В командной среде ваши коллеги-разработчики будут благодарить вас за ограничение вашего использования C ++ / CLI только там, где это абсолютно, безусловно необходимо. Опыт C ++ / CLI не так уж и распространен.
выяснение того, как маршалировать структуру с указателями на структуры массивов структур, заставит ваш мозг плавиться!Мой общий совет - использовать C # (или VB.NET) для создания как можно большего количества кода для вашего приложения. Используйте P / Invoke, когда вам нужно вызвать Win32 API и / или сторонние SDK ограничены, а интерфейсы и параметры просты. Используйте C ++ / CLI в качестве связующего слоя, когда это невозможно.
В командной среде ваши коллеги-разработчики будут благодарить вас за ограничение вашего использования C ++ / CLI только там, где это абсолютно, безусловно необходимо. Опыт C ++ / CLI не так уж и распространен.
выяснение того, как маршалировать структуру с указателями на структуры массивов структур, заставит ваш мозг плавиться!Мой общий совет - использовать C # (или VB.NET) для создания как можно большего количества кода для вашего приложения. Используйте P / Invoke, когда вам нужно вызвать Win32 API и / или сторонние SDK ограничены, а интерфейсы и параметры просты. Используйте C ++ / CLI в качестве связующего слоя, когда это невозможно.
В командной среде ваши коллеги-разработчики будут благодарить вас за ограничение вашего использования C ++ / CLI только там, где это абсолютно, безусловно необходимо. Опыт C ++ / CLI не так уж и распространен.
Используйте P / Invoke, когда вам нужно вызвать Win32 API и / или сторонние SDK ограничены, а интерфейсы и параметры просты. Используйте C ++ / CLI в качестве связующего слоя, когда это невозможно.В командной среде ваши коллеги-разработчики будут благодарить вас за ограничение вашего использования C ++ / CLI только там, где это абсолютно, безусловно необходимо. Опыт C ++ / CLI не так уж и распространен.
Используйте P / Invoke, когда вам нужно вызвать Win32 API и / или сторонние SDK ограничены, а интерфейсы и параметры просты. Используйте C ++ / CLI в качестве связующего слоя, когда это невозможно.В командной среде ваши коллеги-разработчики будут благодарить вас за ограничение вашего использования C ++ / CLI только там, где это абсолютно, безусловно необходимо. Опыт C ++ / CLI не так уж и распространен.
Лично мне нравится C ++ / CLI, но я бы предпочел написать свой пользовательский интерфейс на C #.
C ++ / CLI отлично для работы напрямую с Win32 или говорить с устаревшим кодом, но, на мой взгляд, он слишком многословен, когда дело касается кода пользовательского интерфейса. Код пользовательского интерфейса WinForms на C # приятный и простой (по большей части, ха-ха). Написание кода пользовательского интерфейса на C ++ почти всегда беспорядочно (просто посмотрите на MFC).
Почему бы просто не создать свой пользовательский интерфейс в одной сборке C # и не поместить весь код нижнего уровня в сборку C ++ / CLI? Преимущество C ++ / CLI заключается в том, что вы можете создать управляемый уровень, который может легко вызывать ваш код C #. Затем этот управляемый уровень может легко перенаправлять вызовы на собственный уровень прямого кода C ++ или C.
Какие преимущества дает использование C # для вашего графического интерфейса winforms вместо C ++ / CLI (они выглядят одинаково, одинаковые команды)?
Они не выглядят одинаково. На мой взгляд, C # чище и содержит несколько полезных абстракций. Поддержка инструментов также значительно лучше для C # или VB.net.
Посмотрите здесь пример сравнения
И не забывайте продуктивные языковые функции, такие как лямбда-выражения, LINQ, вывод типов и т. Д., Которые, как правило, в первую очередь обращаются к C # и достаточно скоро попадут на VB.net, но редко доходят до C ++ / CLI.
Я пишу небольшое приложение, для которого требуется несколько списков, кнопок, текстовых полей. Он будет связан с Boost, MySQL и т. Д. Статическими библиотеками C ++. Проект требует функций win32 ...
Я, вероятно, рискую быть отвергнутым, но если большая часть вашего кода уже написана на C ++ и использовать функциональные возможности C ++, разве не проще написать свой графический интерфейс на Native C ++.
Вам не нужно использовать MFC для создания графического интерфейса. Взгляните на Qt4 , у них очень хороший учебник так что вы можете начать писать графический интерфейс на C ++ за несколько часов.
Я задался вопросом об этом, поэтому в Visual Studio 2008 я создал новый проект приложения Windows Forms, используя C ++ / CLI в качестве языка. Первое, что он сделал, это выдал ошибку. Я воспринял это как показатель того, что этот материал еще не совсем готов к использованию. Возможно, я не даю ему достаточно шансов!
Файл 'c: \ source \ Test \ Test \ Form1.h' не поддерживает поддержка синтаксического анализа или генерации кода потому что он не содержится в проект, поддерживающий код.
Это происходит всякий раз, когда я пытаюсь открыть созданный мастером файл Form1.h.
Да, похоже, большинство людей, которые автоматически предлагают использовать C # вместо C ++, предполагают, что вы уже знаете C # или готовы потратить время на его изучение. Я не понимаю, что ненавидят C ++ / CLI WinForms . По крайней мере, если вы хотите перенести существующий код C ++, он выполняет свою работу. По крайней мере, я добавил графический интерфейс к моему существующему C ++ с помощью WinForms / CLI. Да, я, вероятно, использую C #, если начинал с нуля, так как:
Но, как я уже сказал, если у вас уже есть код C ++, вы действительно хотите начать с нуля?