[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

кросскомпиляция mingw32 на Debian



>>  #include <stdio.h>
>> 
>>  int main(int argc, char ** argv)
>>  {
>>    long long a=300, b=400;
>> 
>>    printf("a=%lld b=%lld\n", a, b);
>>  }
> 
> Есть мысль, что printf тянется из библиотеки msvcrt.dll. А она не знает что
> такое long long. А твою строку формата разбирает, как вывести два long. В
> итоге он снимает со стека первые четыре байта (они равны 300), а потом
> вторые четыре (они все по нулям). Попробуй присвоить так
> 
>>  #include <stdio.h>
>> 
>>  int main(int argc, char ** argv)
>>  {
>>    long long a=0x000001900000012c, b=0;
>> 
>>    printf("a=%lld b=%lld\n", a, b);
>>  }
> 
> если напечатает "a=300 b=400", то я прав.

именно так и есть

линуксовый тест выводит
./test
a=1717986918700 b=400

а вендовый
a=300 b=400

мдя. и багрепорт не знаешь куда заслать

и вывести бы эти long long надо... :(



Reply to: