C # if / then директивы для отладки и выпуска

Новая строка внутри значения, похоже, работает, если вы используете точку с запятой как разделитель вместо запятой или вкладкой и используете кавычки.

Это работает для меня как в Excel 2010, так и в Excel 2000. Однако удивительно, он работает только при открытии файла в виде новой электронной таблицы, а не при его импортировании в существующую таблицу с использованием функции импорта данных.

384
задан Snympi 12 March 2019 в 13:31
поделиться

5 ответов

Удалите # Debug в вашем коде. Установите препроцессоры в конфигурации сборки для этой конкретной сборки (DEBUG / _DEBUG должны быть определены уже VS).

Причина, которую она печатает «режим = отладка» из-за вашего #define , а затем пропускает ELIF .

Кроме того, правильный способ проверить:

#if DEBUG
    Console.WriteLine("Mode=Debug"); 
#else
    Console.WriteLine("Mode=Release"); 
#endif

Не проверяйте для выпуска

672
ответ дан 22 November 2019 в 23:40
поделиться

Используйте os.stat и элемент st _ size результирующего объекта:

>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
(33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732)
>>> statinfo.st_size
926L

Output is in bytes.

-121--1779387-

Вы можете сделать это с помощью кода PL/SQL:

TYPE obj_name_type is TABLE OF ALL_OBJECTS%OBJECT_NAME INDEX BY BINARY_INTEGER;
object_names obj_name_type;
i INTEGER;
BEGIN
   SELECT object_name BULK COLLECT INTO object_names FROM ALL_OBJECTS WHERE OWNER = 'whatever' AND object_type = 'PROCEDURE';
   FOR i IN 1 .. object_names.last LOOP
         EXECUTE IMMEDIATE 'GRANT EXECUTE ON ' object_names(i) ' TO ' role_name
   END LOOP;
END;

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

Необходимо использовать EXECUTE IMMEDIATE , поскольку невозможно выполнить DDL статически внутри процедурного кода.

-121--1918153-

Если вы пытаетесь использовать переменную, определенную для типа сборки, вы должны удалить две строки...

#define DEBUG  
#define RELEASE 

... это приведет к тому, что значение # if (DEBUG) всегда будет истинным.

Также отсутствует символ условной компиляции по умолчанию для RELEASE . Если требуется определить его, перейдите к свойствам проекта, перейдите на закладку Build и добавьте RELEASE в текстовое поле Conditional compilation symbols под заголовком General .

Другим вариантом было бы сделать это...

#if DEBUG
    Console.WriteLine("Debug");
#else
    Console.WriteLine("Release");
#endif
19
ответ дан 22 November 2019 в 23:40
поделиться

По умолчанию Visual Studio определяет Debug, если проект компилируется в режиме отладки и не определяет его, если он находится в режиме выпуска. Выпуск не определен в режиме выпуска по умолчанию. Используйте что-то вроде этого:

#if DEBUG
  // debug stuff goes here
#else
  // release stuff goes here
#endif

Если вы хотите сделать что-то только в режиме выпуска:

#if !DEBUG
  // release...
#endif

Кроме того, стоит указывать на то, что вы можете использовать [Условный («Отладка»)] Атрибут на методах, которые Возврат void , чтобы они были выполнены только в том случае, если определен определенный символ. Компилятор удалит все вызовы на эти методы, если символ не определен:

[Conditional("DEBUG")]
void PrintLog() {
    Console.WriteLine("Debug info");
}

void Test() {
    PrintLog();
}
279
ответ дан 22 November 2019 в 23:40
поделиться

Удалить определить на вершине

#if DEBUG
        Console.WriteLine("Mode=Debug"); 
#else
        Console.WriteLine("Mode=Release"); 
#endif
7
ответ дан 22 November 2019 в 23:40
поделиться

Как насчет макро-трюки?

проверили код ниже

  • проверены с динамиками - работали нормально
  • , проверенные подклассы - предупреждение! сломается, согласен, что это делает трюк не так полезно, но все же я думаю, что он рассказывает о том, как Objc работает ...

myclass.h

@interface MyClass : NSObject {
#ifdef MYCLASS_CONTENT
    MYCLASS_CONTENT // Nothing revealed here
#endif
}
@property (nonatomic, retain) NSString *name;
@property (nonatomic, assign) int extra;
- (id)initWithString:(NSString*)str;
@end

myclass.m

// Define the required Class content here before the #import "MyClass.h"
#define MYCLASS_CONTENT \
  NSString *_name; \
  int _extra; \
  int _hiddenThing; 

#import "MyClass.h"

@implementation MyClass
@synthesize name=_name;
@synthesize extra=_extra;

- (id)initWithString:(NSString*)str
{
    self = [super init];
    if (self) {
        self.name = str;
        self.extra = 17;
        _hiddenThing = 19;
    }
    return self;
}

- (void)dealloc
{
    [_name release];
    [super dealloc];
}

@end
-121--4538104-

Существует несколько факторов, которые могут повлиять на это.

Во-первых, убедитесь, что у вас есть настройка VIM для предпочтения хранения локально сваина. Если ваш $ Home находится на местном диске, я склонен ставить это в мой VIMRC (который будет либо в $ Home \ _VIMRC или $ vim \ _vimrc ). Убедитесь, что вы создаете этот каталог, в противном случае VIM будет продолжать использовать один из других каталогов в списке.

set directory^=$HOME/tmp

Это добавляет каталог $ HOME / TMP каталог для начала списка, который VIM проверяет, где размещать SwapFiles.

Во-вторых, сделайте то же самое для файла резервного копирования, который VIM создает. Та же ситуация, как указано выше, но вариант, который вы менялись, это Backupdir вместо каталога .

В-третьих, убедитесь, что вы отключите плагин MatchParen. Этот плагин новый для Vim 7, поэтому вы можете использовать для использования более старой версии VIM. Это вызывает частую сканирование файла для сопоставления Parens, брекетов и т. Д., Что может резко медленно поборовывать, когда файл находится в доме сети. Опять же, это должно идти в вашем Vimrc.

let g:loaded_matchparen = 1

Если вы хотите временно отключить плагин, вы можете использовать команду : NOMATCHPAREN , а затем : DomautchParen , чтобы повторно включить его позже в этом сеансе VIM.

Наконец, если ни одна из этих помощи Вы всегда можете всегда скопировать файл локально и редактировать его.

-121--2938673-

Я предпочитаю проверять его, как это vs, ищет #defines:

if (System.Diagnostics.Debugger.IsAttached)
{
   //...
}
else
{
   //...
}

с предостережением, которое, конечно, вы можете компилировать и развернуть что-то в отладке режима, но все еще не имею отладчик.

191
ответ дан 22 November 2019 в 23:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: