كيفية الحصول على التحسس موثوق العمل في Visual Studio 2008

StackOverflow https://stackoverflow.com/questions/39474

سؤال

لا أحد يعرف كيفية الحصول على التحسس للعمل بشكل صحيح عند العمل في C/C++ المشاريع ؟ يبدو أن العمل على حوالي 1 في 10 ملفات.Visual Studio 2005 يبدو أن يكون أفضل من عام 2008.

تحرير:بينما ليس بالضرورة الحل ، عمل حول المقدمة هنا:

كيفية الحصول على التحسس موثوق العمل في Visual Studio 2008

هو على الأرجح أفضل رهان إذا كنت تريد الكريم التحسس النظام.

هل كانت مفيدة؟

المحلول

لقد أدركت أيضا من التحسس هو في وقت ما "المفقودة" في بعض المشاريع الكبيرة.لماذا ؟ أي فكرة.

هذا هو السبب في أننا قد اشترى البصرية المساعدة (من الطماطم البرامج) و تعطيل خاصية التحسس الذكي عن طريق حذف dll feacp.dll في Visual studio فرعي (C:\Program Files\Microsoft Visual Studio 8\VC\vcpackages)

هذا ليس حلا ، فقط الحل.

نصائح أخرى

الأم C++ التحسس الذكي لا يعمل بشكل صحيح في أي إصدار من برنامج Visual Studio.أجد هناك نوعان من المشاكل الشائعة:

1) رأس مسارات الملفات لم يتم تعيين بشكل صحيح.عندما تجد نوع حيث التحسس الذكي لا يعمل ، استخدام IDE من خلال النقر على كل رأس الملف إلى العثور على واحد التي تحتوي على نوع.(انقر على الحق في #تشمل واختر فتح الوثيقة...).إذا فشل هذا قبل أن تحصل على الملف الذي يعلن نوع ثم هذه هي المشكلة.تأكد من ملف الرأس مسارات البحث يتم تعيين بشكل صحيح.

،

2) التحسس قاعدة البيانات تالفة.هذا يحدث في كل وقت.تحتاج إلى إغلاق الحل حذف .الأهلي ملف ثم فتح باب الحل.أنا سجلت الماكرو يمكنني استخدام هذا في جواب سؤال آخر هنا.


المعالج أيضا يمكن أن تخلط بين التحسس - لذا تأكد من أي #تعرف خلال بناء متاحة أيضا التحسس الذكي.بخلاف ذلك, أنا لا أعرف ماذا يمكن كسرها.أنا لم أر أي مسائل خاصة مع الأمام الإعلانات.

يبدو أن هناك أمل في الأفق بالنسبة لأولئك منا غير قادر على الحصول على البصرية المساعدة:

إعادة بناء التحسس

هل لديك أي الوظائف الإضافية المثبتة (أو إلغاء)?أجد أن آثار بلدي التحسس الذكي.

إلى جانب ذلك فقط للتأكد من أدوات->خيارات->محرر النص->جميع اللغات "السيارات أعضاء قائمة" و "المعلمة المعلومات" يتم فحص قبالة.

أنا لا استخدام VS2008 C++, فقط VB & C#, ولكن أجد أنه عندما التحسس توقف عن العمل (صحيح بالنسبة VS2003/2005/2008) لأن شيئا في المشروع/ملف كسر عادة سيئة إشارة أو رمز.

VB و C# يكون أفضل بكثير التحسس الدعم بسبب القدرة على التفكير في الرجوع إليها الجمعيات لبناء التحسس شجرة.

C++ على المشي تضمين الملفات على نماذج وظيفة ، وإذا مسارات غير صحيحة لن تجد كل نموذج رؤوس.

بلدي إصلاح itellisense كان مطلوبا بعد أن فظيعة ريفاكتور فائدة مفروم قانون بلدي.المشكلة كانت فئة رأس الملفات التي شملت #تشمل من نفسها.العودية الإشارة يدمر itellisense.أعراض هذا إذا itellisense يمكن أن نرى فئات أخرى ولكن لا أحد الحالية.أيضا:

استخدام #pragma مرة واحدة للقضاء على تكرار رأس الأحمال

إذا كان المشروع الآن وقتا أطول بكثير جدا من الوقت لتحميل ، itellisense محاولة لفهم الصراع الذي تسبب ثم عدم استكمال الدعم.

في كثير من الأحيان أنها ليست سوى فئة واحدة الكائن الذي يتأثر هذا يظهر لك ما هي الملفات (عادة رؤوس) للنظر في.

@جون ريتشاردسون / @جوناثان هولندا

بلدي يشمل يتم الإعداد بشكل صحيح, لا مشاكل هناك.لقد حاولت أيضا الأهلي بناء عدة مرات لكنه لم يصلح له 100%.

لدي شعور أنه قد يكون القيام به مع الأمام الإعلانات من الطبقات.على سبيل المثالللحد من تعقيد يشمل في رأس الملفات نحن عادة نفعل شيئا مثل:

class MyPredeclared;

class SomeOtherClass
{
private:
    MyPredeclared* m_pPointer;
}

أتساءل عما إذا كان هذا أخطأ ؟ أي أفكار أخرى ؟ فإنه يحصل بالتأكيد أسوأ أكبر يحصل المشروع الخاص بك.

لدي مشكلة مزعجة جدا, التحسس كان يعمل فقط في بعض الملفات ، من دون أي سبب واضح...استغرق الأمر مني بضع ساعات من البحث من خلال جوجل ، ولكن فهمت أخيرا أن السبب كان في الواقع العودية إشارة!كنت تستخدم:

#ifndef CLASS_H
#define CLASS_H
...
#endif

لتجنب إعادة تعريف الرموز و هذا في بعض الأحيان يكسر التحسس في المشاريع الكبيرة.

ولكن يكفي أن تعليق ifndef-تعريف-endif ووضع:

#pragma once 

في بداية رأس الملفات لتجنب يزال redefinitions و التحسس العمل مرة أخرى =)=)

على الأقل هذا عملت بالنسبة لي ، نأمل أن تكون مفيدة...

هتافات فرانشيسكو

لدي درس في الآونة الأخيرة التحسس في VS2008 ، وأنا النامية كبيرة بدلا C++ الجبر الخطي العددي المكتبة حيث القوالب و هذه تستخدم على نطاق واسع.التحسس توقفت عن العمل قريبا في مشروع وأنا نوع من أعطى, ولكن الآن أصبح مزعج حقا دون ذلك لذلك أنا وضعت للتحقيق.هذا ما وجدت:

على افتراض أن هناك file(s), تحتوي على رمز "فواصل" التحسس ،

  • إذا كان رأس الملفات التي كسر التحسس في المشروع, ولكن لا #includeد, أنه لا يزال يعمل في بقية الملفات
  • إذا كانت مدرجة ، ولكن أي نوع وأعلن داخل تستخدم أنه لا يزال يعمل
  • إذا كانت مدرجة و نوع أعلن الداخل فإنها قد لا تزال تعمل قليلا (لا التحسس للأعضاء, لا التحسس بعد حدوث نوع معين, ولكن على الأقل العالمية وأسماء الحجة معلومات من قبل)
  • إذا التحسس هو كسر في أحد .الملف cpp ، فإنه يمكن أن لا تزال تعمل في الآخرين حيث إشكالية رمز لم يتم تضمين أو استخدامها (ولكن أتصور إذا تعطل سيئة, وسوف تحصل على تعطيل المشروع بأكمله ، على الرغم من أن هذا لم يحدث لي)
  • التحسس الذكي يبدو أن تحديث بعد نجاح تجميع (في بعض الأحيان ليس من قبل)
  • وضع كسر رمز داخل أي من #if 0, /* .. */ أو // يبدو أن وضع التحسس في سهولة

من C++ الميزات تستخدم في الواقع سوى عدد قليل من كسر التحسس:

  • مقارنة مع '>' أو '>=' في قالب المعلمة (مثلا ، static_assert<(size > 0)>)
    • لم تحل باستخدام مزدوج بين قوسين (static_assert<((size > 0))> لا يساعد)
    • حلها باستخدام '<'أو '<=' بدلا من ذلك (static_assert<0 < size> يعمل)
    • حل تخزين القيمة في التعداد واستخدام أن تتخصص القالب
  • صراحة قالب وظيفة التخصص تعطيل حجة معلومات (مثل function<type>(args))
    • ربما غير قادر على حل (ربما التفاف في ماكرو), ولكن يمكن أن أعيش مع كونها مكسورة
  • إنشاء مثيل من قالب الأعضاء نوع ، مثل Matrix::MakeMatrixType<3, 3>::Result r;
    • من الصعب معرفة بالضبط لماذا يحدث هذا (على الأرجح بسبب استخدام Eigen)
    • الحل عن طريق تحريك هذه التعليمات البرمجية في مجموعة منفصلة .cpp حيث هو لا يعمل (ليس من الممكن دائما)

ويبدو أن بعضا من هذه المشاكل بسبب بعض "المبسطة" إعراب ، وهو أقل قوة من المناسب C++ محلل.مع المعلومات المذكورة أعلاه في متناول اليد ، "موثوق بها" طريقة صنع التحسس العمل في التعليمات البرمجية الموجودة:

  1. إعداد مشروع فارغ (وحدة التحكم التطبيق) ، Main.cpp مع دمية void main() {} في ذلك.
  2. تشمل واحدة من كسر رأس الملفات ، math.h
  3. بناء (يجب أن تجمع من أجل التحسس تحديث موثوق)
  4. اختبار ما إذا كان التحسس تعمل عن طريق كتابة مثل sin( ورؤية ما إذا كان حجة تساعد للملوثات العضوية الثابتة.في بعض الأحيان هذا العمل ، ولكن الأعضاء المساعدة لن - حتى محاولة ذلك أيضا.
  5. جعل مثيل من شيء في ملف الرأس, بناء, ترى لو أن تمكن من قتل هو.
  6. إزالة رمز من الجاني ملف ، انتقل إلى الخطوة 3
  7. بعد العثور على وإصلاح مشكلة رمز, وضعت مرة أخرى رمز إزالة في الخطوة 5, حاول مرة أخرى
  8. بعد إجراء كل فئة تعمل بشكل جيد ، وجعل مثيل الصف التالي ، وهكذا ...

لقد وجدت أنه من السهل هذه الطريقة لتحديد المواقع من التعليمات البرمجية التي جعلت المشاكل (أنا أدرك أن هذا قد يكون مجديا حقا المشاريع الكبيرة ، في حالتي فقط ملف واحد من أصل 97 جعلت المشاكل).علما أن 'بناء' هنا يشير إلى تجميع ربط المرحلة لا تحتاج إلى النهاية ، حتى externals لم يتم حلها هي موافق ، هو أن التحديث بغض النظر عن.

أسلوب آخر تحديث (غير البناء) هو حفظ كل شيء ، وثيقة العمل ، حذف .الأهلي الملف وإعادة فتحه.ثم انتظر 'تحديث التحسس ...(ن) أن تختفي من شريط (ن التهم نحو الصفر, إذا كان لا يذهب كل في طريقه ، فإنه يدل على نوع من التقدم حيث وقعت مشاكل).لقد وجدت هذا مملة نوعا ما.

حول هذه المشكلة لقد لاحظت شيئا مثيرا للاهتمام (على Visual Studio 2010):إلى حل هذه المشكلة لقد تغيرت #include sintax في رأس الملفات قبل كانت (القديمة المشروع القيام به مع VS 2005 و فتح باستخدام مقابل 2010):

#include <myfile.h> 

وأنا إصلاح هذا مع:

#include "myfile.h"

بعد التحسس تبدأ العمل بشكل صحيح!آمل أن يكون هذا يمكن أن تساعد!

اضطررت إلى إعادة تعيين إعدادات...

C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE>devenv.exe /ResetSettings

الموضوع هذا هنا

المشكلة هي مع .vcproj الملفات.

سوف تجد إذا قمت بالتبديل إلى وضع الإصدار من وضع التصحيح, بناء, ثم حاول التحسس غالبا ما يعمل.

إغلاق Visual Studio.إذا كنت تبحث عن .vcproj الملفات في المشروع الخاص بك ، وتحريرها والبحث عن أول حالتين من AdditionalIncludeDirectories.قيمة هذا ينبغي أن ننظر بشيء من مثل "..\,....\" بدلا من "../..".

إعادة فتح المشروع الخاص بك ، والسماح التحسس الانتهاء من بناء ، ومن ثم ينبغي أن تكون ثابتة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top