Я использую Visual Studio 2010 и ReSharper 5.
Я определяю это в верхней части файла .cs.
#if X86
using size_t = System.Int32;
#else
using size_t = System.Int64;
#endif
Затем я могу использовать size_t и знайте, что это собственное целое число, 32 бита, если скомпилировано как 32-битная сборка, и 64 бита, если скомпилировано как 64-битная сборка. (для тех, кому интересно, альтернативой всегда является использование Int64 или ветвление во время выполнения на IntPtr.Size == 4 и две версии кода. Я предпочитаю это решение.)
Однако, если я наберу size_t и нажму space, он будет автоматически преобразован в Int64 (или Int32, если определен X86). Очевидно, это нежелательно.
Я вошел в параметры ReSharper, зашел в Environment \ Intellisence \ Completion behavior и отключил все флажки в разделе «Автоматически заполнять отдельный элемент с помощью:».
Это все еще происходит, можно ли еще что-нибудь попробовать?