Проблемы с длинным путем в TFS Team Build, когда установлено CreatePackageOnPublish значение true.

У нас есть проблема при сборке из-за длинного пути, созданного TFS Team Build, когда параметр CreatePackageOnPublish установлен на истина .

В каталоге PackageTmp (см. рисунок ниже) пакет хранится, {printf ("% u% u% u \ n", sizeof "", sizeof ("" + 0), sizeof (char *)); возврат 0; } выводит 1 4 4 при компиляции с GCC в Linux, но ...

Следующая программа на C:

#include <stdio.h>

int main(void)
{
    printf("%u %u %u\n",sizeof "",sizeof(""+0),sizeof(char *));
    return 0;
}

выводит 1 4 4 при компиляции с GCC в Linux, но выводит 1 1 4 при компиляции с Microsoft Visual C ++ на Windows. Результат GCC - это то, что я ожидал. Отличаются ли они из-за ошибки MSVC или из-за того, что sizeof ("" + 0) не определено? Для обоих компиляторов поведение (то есть, равно ли напечатанное среднее значение первому или последнему значению) одинаково, независимо от того, какой строковый литерал или целочисленная константа вы используете.

Соответствующая ссылка в стандарте ANSI C кажется быть 6.2.2.1 - Lvalue и указатели функций:

"За исключением случаев, когда это операнд оператора sizeof ... lvalue, имеющий тип 'array of type', преобразуется в выражение, имеющее тип 'указатель на тип' Случайный случайный = новый Случайный (); startMeasuringTime (); двойной результат; т моя консоль отображает символы от 128 до 255? например: cout << "¿" << endl; // перевернутый вопросительный знак Вывод: ┐

Проблема в том, что javac выполняет множество (очень разумных!) Встроенных оптимизаций, которые не позволяют коду тестировать то, что я хотел бы проверить. Например, один тест пытается проверить, правильно ли обрабатываются интегральные переполнения для всех типов. Вот один снимок:

byte min = (byte)-128;
byte max = (byte) 127;

assertTrue((byte)(max + 1) == min); // Should overflow and work correctly.

Созданный файл .class имеет результат ((byte) max + 1) , жестко закодированный как (byte) -128 , что полностью опровергает суть теста.

У меня такой вопрос: есть ли способ отключить оптимизацию в javac ? Мне не удалось найти переключатель командной строки для этого, хотя, возможно, я просто недостаточно внимательно посмотрел. Если нет возможности сделать это, есть ли другой компилятор Java, который может компилировать со всеми отключенными оптимизациями?

5
задан GEOCHET 7 August 2015 в 14:26
поделиться