1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Беседка для программистов, или «Бутерброд с кодом»

Тема в разделе "Флейм", создана пользователем Рыжий Тигра, 25 окт 2013.

  1. Burstfear

    Burstfear

    Регистрация:
    4 окт 2014
    Сообщения:
    0
    Ммм, приму к сведению, буду учиться. ну тогда тут мешаться не буду, а пока изучу темы сайта. Всем доброй ночи!!!!! Прошу прощения за флуд!!!
     
  2. A.P.$lasH

    A.P.$lasH

    Legacy

    Регистрация:
    27 фев 2010
    Сообщения:
    4.667
    http://www.parashift.com/c++-faq/convert-to-c.html
    http://stackoverflow.com/questions/737257/how-to-convert-c-code-to-c (но основные кандидаты по первой ссылке есть, здесь больше рассуждения на тему)

    Три кое-каких варианта на выбор всё же есть - компилятор от Comeau Computing, LLVM и Cfront от Страуструпа.

    Вот только Comeau Computing продают свою работу за $50 и в сети я его сходу не нашёл, а Cfront уж очень старенький, так что надежда, мне кажется, на LLVM и всё, кончились рабочие варианты.

    Пример исходника после LLVM уже помер, но в архивах можно отыскать:
    Код:
    [ssen@virgon]$ cat test.cp
    #include <iostream>
    
    int main(int argc, char *argv[]) {
    	std::cout << "foo" << std::endl;
    	return 0;
    }
    [ssen@virgon]$ /Developer/usr/bin/llvm-g++ -c test.cp -o test.bc -emit-llvm
    [ssen@virgon]$ /Developer/usr/local/bin/llc -march=c  test.bc -o test2.c
    [ssen@virgon]$ cc -c test2.c
    test2.c:272: warning: conflicting types for built-in function ‘malloc’
    test2.c: In function ‘main’:
    test2.c:303: warning: return type of ‘main’ is not ‘int’
    [ssen@virgon]$ cc -o test2 test2.o -lstdc++
    [ssen@virgon]$ ./test2
    foo
    [ssen@virgon]$ cat test2.c
    /* Provide Declarations */
    #include <stdarg.h>
    #include <setjmp.h>
    /* get a declaration for alloca */
    #if defined(__CYGWIN__) || defined(__MINGW32__)
    #define  alloca(x) __builtin_alloca((x))
    #define _alloca(x) __builtin_alloca((x))
    #elif defined(__APPLE__)
    extern void *__builtin_alloca(unsigned long);
    #define alloca(x) __builtin_alloca(x)
    #define longjmp _longjmp
    #define setjmp _setjmp
    #elif defined(__sun__)
    #if defined(__sparcv9)
    extern void *__builtin_alloca(unsigned long);
    #else
    extern void *__builtin_alloca(unsigned int);
    #endif
    #define alloca(x) __builtin_alloca(x)
    #elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
    #define alloca(x) __builtin_alloca(x)
    #elif defined(_MSC_VER)
    #define inline _inline
    #define alloca(x) _alloca(x)
    #else
    #include <alloca.h>
    #endif
    
    #ifndef __GNUC__  /* Can only support "linkonce" vars with GCC */
    #define __attribute__(X)
    #endif
    
    #if defined(__GNUC__) && defined(__APPLE_CC__)
    #define __EXTERNAL_WEAK__ __attribute__((weak_import))
    #elif defined(__GNUC__)
    #define __EXTERNAL_WEAK__ __attribute__((weak))
    #else
    #define __EXTERNAL_WEAK__
    #endif
    
    #if defined(__GNUC__) && defined(__APPLE_CC__)
    #define __ATTRIBUTE_WEAK__
    #elif defined(__GNUC__)
    #define __ATTRIBUTE_WEAK__ __attribute__((weak))
    #else
    #define __ATTRIBUTE_WEAK__
    #endif
    
    #if defined(__GNUC__)
    #define __HIDDEN__ __attribute__((visibility("hidden")))
    #endif
    
    #ifdef __GNUC__
    #define LLVM_NAN(NanStr)   __builtin_nan(NanStr)   /* Double */
    #define LLVM_NANF(NanStr)  __builtin_nanf(NanStr)  /* Float */
    #define LLVM_NANS(NanStr)  __builtin_nans(NanStr)  /* Double */
    #define LLVM_NANSF(NanStr) __builtin_nansf(NanStr) /* Float */
    #define LLVM_INF           __builtin_inf()         /* Double */
    #define LLVM_INFF          __builtin_inff()        /* Float */
    #define LLVM_PREFETCH(addr,rw,locality) __builtin_prefetch(addr,rw,locality)
    #define __ATTRIBUTE_CTOR__ __attribute__((constructor))
    #define __ATTRIBUTE_DTOR__ __attribute__((destructor))
    #define LLVM_ASM           __asm__
    #else
    #define LLVM_NAN(NanStr)   ((double)0.0)           /* Double */
    #define LLVM_NANF(NanStr)  0.0F                    /* Float */
    #define LLVM_NANS(NanStr)  ((double)0.0)           /* Double */
    #define LLVM_NANSF(NanStr) 0.0F                    /* Float */
    #define LLVM_INF           ((double)0.0)           /* Double */
    #define LLVM_INFF          0.0F                    /* Float */
    #define LLVM_PREFETCH(addr,rw,locality)            /* PREFETCH */
    #define __ATTRIBUTE_CTOR__
    #define __ATTRIBUTE_DTOR__
    #define LLVM_ASM(X)
    #endif
    
    #if __GNUC__ < 4 /* Old GCC's, or compilers not GCC */ 
    #define __builtin_stack_save() 0   /* not implemented */
    #define __builtin_stack_restore(X) /* noop */
    #endif
    
    #if __GNUC__ && __LP64__ /* 128-bit integer types */
    typedef int __attribute__((mode(TI))) llvmInt128;
    typedef unsigned __attribute__((mode(TI))) llvmUInt128;
    #endif
    
    #define CODE_FOR_MAIN() /* Any target-specific code for main()*/
    
    #ifndef __cplusplus
    typedef unsigned char bool;
    #endif
    
    
    /* Support for floating point constants */
    typedef unsigned long long ConstantDoubleTy;
    typedef unsigned int        ConstantFloatTy;
    typedef struct { unsigned long long f1; unsigned short f2; unsigned short pad[3]; } ConstantFP80Ty;
    typedef struct { unsigned long long f1; unsigned long long f2; } ConstantFP128Ty;
    
    
    /* Global Declarations */
    /* Helper union for bitcasts */
    typedef union {
      unsigned int Int32;
      unsigned long long Int64;
      float Float;
      double Double;
    } llvmBitCastUnion;
    /* Structure forward decls */
    struct l_struct_2E_std_3A__3A_basic_ios_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_;
    struct l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_;
    struct l_struct_2E_std_3A__3A_basic_streambuf_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_;
    struct l_struct_2E_std_3A__3A_ctype_3C_char_3E_;
    struct l_struct_2E_std_3A__3A_ios_base;
    struct l_struct_2E_std_3A__3A_ios_base_3A__3A_Init;
    struct l_struct_2E_std_3A__3A_ios_base_3A__3A__Callback_list;
    struct l_struct_2E_std_3A__3A_ios_base_3A__3A__Words;
    struct l_struct_2E_std_3A__3A_locale;
    struct l_struct_2E_std_3A__3A_locale_3A__3A__Impl;
    struct l_struct_2E_std_3A__3A_locale_3A__3A_facet;
    struct l_struct_2E_std_3A__3A_num_get_3C_char_2C_std_3A__3A_istreambuf_iterator_3C_char_2C__20_std_3A__3A_char_traits_3C_char_3E__20__3E__20__3E_;
    struct l_unnamed0;
    struct l_unnamed1;
    struct l_unnamed2;
    struct l_unnamed3;
    struct l_unnamed4;
    
    /* Typedefs */
    typedef struct l_struct_2E_std_3A__3A_basic_ios_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ l_struct_2E_std_3A__3A_basic_ios_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_;
    typedef struct l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_;
    typedef struct l_struct_2E_std_3A__3A_basic_streambuf_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ l_struct_2E_std_3A__3A_basic_streambuf_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_;
    typedef struct l_struct_2E_std_3A__3A_ctype_3C_char_3E_ l_struct_2E_std_3A__3A_ctype_3C_char_3E_;
    typedef struct l_struct_2E_std_3A__3A_ios_base l_struct_2E_std_3A__3A_ios_base;
    typedef struct l_struct_2E_std_3A__3A_ios_base_3A__3A_Init l_struct_2E_std_3A__3A_ios_base_3A__3A_Init;
    typedef struct l_struct_2E_std_3A__3A_ios_base_3A__3A__Callback_list l_struct_2E_std_3A__3A_ios_base_3A__3A__Callback_list;
    typedef struct l_struct_2E_std_3A__3A_ios_base_3A__3A__Words l_struct_2E_std_3A__3A_ios_base_3A__3A__Words;
    typedef struct l_struct_2E_std_3A__3A_locale l_struct_2E_std_3A__3A_locale;
    typedef struct l_struct_2E_std_3A__3A_locale_3A__3A__Impl l_struct_2E_std_3A__3A_locale_3A__3A__Impl;
    typedef struct l_struct_2E_std_3A__3A_locale_3A__3A_facet l_struct_2E_std_3A__3A_locale_3A__3A_facet;
    typedef struct l_struct_2E_std_3A__3A_num_get_3C_char_2C_std_3A__3A_istreambuf_iterator_3C_char_2C__20_std_3A__3A_char_traits_3C_char_3E__20__3E__20__3E_ l_struct_2E_std_3A__3A_num_get_3C_char_2C_std_3A__3A_istreambuf_iterator_3C_char_2C__20_std_3A__3A_char_traits_3C_char_3E__20__3E__20__3E_;
    typedef struct l_unnamed0 l_unnamed0;
    typedef struct l_unnamed1 l_unnamed1;
    typedef struct l_unnamed2 l_unnamed2;
    typedef struct l_unnamed3 l_unnamed3;
    typedef struct l_unnamed4 l_unnamed4;
    
    /* Structure contents */
    struct l_struct_2E_std_3A__3A_ios_base_3A__3A__Words {
      unsigned char *field0;
      unsigned int field1;
    };
    
    struct l_unnamed4 { struct l_struct_2E_std_3A__3A_ios_base_3A__3A__Words array[8]; };
    
    struct l_struct_2E_std_3A__3A_locale {
      struct l_struct_2E_std_3A__3A_locale_3A__3A__Impl *field0;
    };
    
    struct l_struct_2E_std_3A__3A_ios_base {
      unsigned int  (**field0) ();
      unsigned int field1;
      unsigned int field2;
      unsigned int field3;
      unsigned int field4;
      unsigned int field5;
      struct l_struct_2E_std_3A__3A_ios_base_3A__3A__Callback_list *field6;
      struct l_struct_2E_std_3A__3A_ios_base_3A__3A__Words field7;
      struct l_unnamed4 field8;
      unsigned int field9;
      struct l_struct_2E_std_3A__3A_ios_base_3A__3A__Words *field10;
      struct l_struct_2E_std_3A__3A_locale field11;
    };
    
    struct l_struct_2E_std_3A__3A_basic_ios_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ {
      struct l_struct_2E_std_3A__3A_ios_base field0;
      struct l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ *field1;
      unsigned char field2;
      unsigned char field3;
      struct l_struct_2E_std_3A__3A_basic_streambuf_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ *field4;
      struct l_struct_2E_std_3A__3A_ctype_3C_char_3E_ *field5;
      struct l_struct_2E_std_3A__3A_num_get_3C_char_2C_std_3A__3A_istreambuf_iterator_3C_char_2C__20_std_3A__3A_char_traits_3C_char_3E__20__3E__20__3E_ *field6;
      struct l_struct_2E_std_3A__3A_num_get_3C_char_2C_std_3A__3A_istreambuf_iterator_3C_char_2C__20_std_3A__3A_char_traits_3C_char_3E__20__3E__20__3E_ *field7;
    };
    
    struct l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ {
      unsigned int  (**field0) ();
      struct l_struct_2E_std_3A__3A_basic_ios_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ field1;
    };
    
    struct l_struct_2E_std_3A__3A_basic_streambuf_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ {
      unsigned int  (**field0) ();
      unsigned char *field1;
      unsigned char *field2;
      unsigned char *field3;
      unsigned char *field4;
      unsigned char *field5;
      unsigned char *field6;
      struct l_struct_2E_std_3A__3A_locale field7;
    };
    
    struct l_struct_2E_std_3A__3A_locale_3A__3A_facet {
      unsigned int  (**field0) ();
      unsigned int field1;
    };
    
    struct l_unnamed3 { unsigned char array[256]; };
    
    struct l_struct_2E_std_3A__3A_ctype_3C_char_3E_ {
      struct l_struct_2E_std_3A__3A_locale_3A__3A_facet field0;
      unsigned int *field1;
      unsigned char field2;
      unsigned int *field3;
      unsigned int *field4;
      unsigned int *field5;
      unsigned char field6;
      struct l_unnamed3 field7;
      struct l_unnamed3 field8;
      unsigned char field9;
    };
    
    struct l_struct_2E_std_3A__3A_ios_base_3A__3A_Init {
      unsigned char field0;
    } __attribute__ ((packed));
    
    struct l_struct_2E_std_3A__3A_ios_base_3A__3A__Callback_list {
      struct l_struct_2E_std_3A__3A_ios_base_3A__3A__Callback_list *field0;
      void  (*field1) (unsigned int , struct l_struct_2E_std_3A__3A_ios_base *, unsigned int );
      unsigned int field2;
      unsigned int field3;
    };
    
    struct l_struct_2E_std_3A__3A_locale_3A__3A__Impl {
      unsigned int field0;
      struct l_struct_2E_std_3A__3A_locale_3A__3A_facet **field1;
      unsigned int field2;
      struct l_struct_2E_std_3A__3A_locale_3A__3A_facet **field3;
      unsigned char **field4;
    };
    
    struct l_struct_2E_std_3A__3A_num_get_3C_char_2C_std_3A__3A_istreambuf_iterator_3C_char_2C__20_std_3A__3A_char_traits_3C_char_3E__20__3E__20__3E_ {
      struct l_struct_2E_std_3A__3A_locale_3A__3A_facet field0;
    };
    
    struct l_unnamed0 {
      unsigned int field0;
      void  (*field1) (void);
    };
    
    struct l_unnamed1 { struct l_unnamed0 array[1]; };
    
    struct l_unnamed2 { unsigned char array[4]; };
    
    
    /* External Global Variable Declarations */
    extern struct l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ _ZSt4cout;
    extern unsigned char *__dso_handle;
    
    /* Function Declarations */
    double fmod(double, double);
    float fmodf(float, float);
    long double fmodl(long double, long double);
    unsigned int main(unsigned int llvm_cbe_argc, unsigned char **llvm_cbe_argv);
    static void _GLOBAL__I_main(void) __ATTRIBUTE_CTOR__;
    struct l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ *_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(struct l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ *, unsigned char *);
    struct l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ *_ZNSolsEPFRSoS_E(struct l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ *, struct l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ * (*) (struct l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ *));
    struct l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ *_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(struct l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ *);
    static void _Z41__static_initialization_and_destruction_0ii(unsigned int llvm_cbe___initialize_p, unsigned int llvm_cbe___priority);
    void _ZNSt8ios_base4InitC1Ev(struct l_struct_2E_std_3A__3A_ios_base_3A__3A_Init *);
    unsigned int __cxa_atexit(void  (*) (unsigned char *), unsigned char *, unsigned char *);
    static void __tcf_0(unsigned char *llvm_cbe_unnamed_arg);
    void _ZNSt8ios_base4InitD1Ev(struct l_struct_2E_std_3A__3A_ios_base_3A__3A_Init *);
    unsigned char *malloc();
    void free(unsigned char *);
    void abort(void);
    
    
    /* Global Variable Declarations */
    static struct l_unnamed2 LC;
    static struct l_struct_2E_std_3A__3A_ios_base_3A__3A_Init _ZStL8__ioinit;
    
    
    /* Global Variable Definitions and Initialization */
    static struct l_unnamed2 LC = { "foo" };
    static struct l_struct_2E_std_3A__3A_ios_base_3A__3A_Init _ZStL8__ioinit;
    
    
    /* Function Bodies */
    static inline int llvm_fcmp_ord(double X, double Y) { return X == X && Y == Y; }
    static inline int llvm_fcmp_uno(double X, double Y) { return X != X || Y != Y; }
    static inline int llvm_fcmp_ueq(double X, double Y) { return X == Y || llvm_fcmp_uno(X, Y); }
    static inline int llvm_fcmp_une(double X, double Y) { return X != Y; }
    static inline int llvm_fcmp_ult(double X, double Y) { return X <  Y || llvm_fcmp_uno(X, Y); }
    static inline int llvm_fcmp_ugt(double X, double Y) { return X >  Y || llvm_fcmp_uno(X, Y); }
    static inline int llvm_fcmp_ule(double X, double Y) { return X <= Y || llvm_fcmp_uno(X, Y); }
    static inline int llvm_fcmp_uge(double X, double Y) { return X >= Y || llvm_fcmp_uno(X, Y); }
    static inline int llvm_fcmp_oeq(double X, double Y) { return X == Y ; }
    static inline int llvm_fcmp_one(double X, double Y) { return X != Y && llvm_fcmp_ord(X, Y); }
    static inline int llvm_fcmp_olt(double X, double Y) { return X <  Y ; }
    static inline int llvm_fcmp_ogt(double X, double Y) { return X >  Y ; }
    static inline int llvm_fcmp_ole(double X, double Y) { return X <= Y ; }
    static inline int llvm_fcmp_oge(double X, double Y) { return X >= Y ; }
    
    unsigned int main(unsigned int llvm_cbe_argc, unsigned char **llvm_cbe_argv) {
      unsigned int llvm_cbe_argc_addr;    /* Address-exposed local */
      unsigned char **llvm_cbe_argv_addr;    /* Address-exposed local */
      unsigned int llvm_cbe_retval;    /* Address-exposed local */
      unsigned int ltmp_0_1;    /* Address-exposed local */
      unsigned int llvm_cbe_alloca_20_point;
      struct l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ *ltmp_1_2;
      struct l_struct_2E_std_3A__3A_basic_ostream_3C_char_2C_std_3A__3A_char_traits_3C_char_3E__20__3E_ *ltmp_2_2;
      unsigned int ltmp_3_3;
      unsigned int llvm_cbe_retval1;
    
      CODE_FOR_MAIN();
      llvm_cbe_alloca_20_point = ((unsigned int )0u);
      *(&llvm_cbe_argc_addr) = llvm_cbe_argc;
      *(&llvm_cbe_argv_addr) = llvm_cbe_argv;
      ltmp_1_2 = _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc((&_ZSt4cout), ((&LC.array[((signed int )0u)])));
      ltmp_2_2 = _ZNSolsEPFRSoS_E(ltmp_1_2, _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_);
      *(&ltmp_0_1) = 0u;
      ltmp_3_3 = *(&ltmp_0_1);
      *(&llvm_cbe_retval) = ltmp_3_3;
      llvm_cbe_retval1 = *(&llvm_cbe_retval);
      return llvm_cbe_retval1;
    }
    
    
    static void _GLOBAL__I_main(void) {
      _Z41__static_initialization_and_destruction_0ii(1u, 65535u);
      return;
    }
    
    
    static void _Z41__static_initialization_and_destruction_0ii(unsigned int llvm_cbe___initialize_p, unsigned int llvm_cbe___priority) {
      unsigned int llvm_cbe___initialize_p_addr;    /* Address-exposed local */
      unsigned int llvm_cbe___priority_addr;    /* Address-exposed local */
      unsigned int llvm_cbe_alloca_20_point;
      unsigned int ltmp_4_3;
      unsigned int ltmp_5_3;
      unsigned int ltmp_6_3;
    
      llvm_cbe_alloca_20_point = ((unsigned int )0u);
      *(&llvm_cbe___initialize_p_addr) = llvm_cbe___initialize_p;
      *(&llvm_cbe___priority_addr) = llvm_cbe___priority;
      ltmp_4_3 = *(&llvm_cbe___initialize_p_addr);
      if ((ltmp_4_3 == 1u)) {
        goto llvm_cbe_bb;
      } else {
        goto llvm_cbe_return;
      }
    
    llvm_cbe_bb:
      ltmp_5_3 = *(&llvm_cbe___priority_addr);
      if ((ltmp_5_3 == 65535u)) {
        goto llvm_cbe_bb1;
      } else {
        goto llvm_cbe_return;
      }
    
    llvm_cbe_bb1:
      _ZNSt8ios_base4InitC1Ev((&_ZStL8__ioinit));
      ltmp_6_3 = __cxa_atexit(__tcf_0, ((unsigned char *)/*NULL*/0), ((unsigned char *)(&__dso_handle)));
      return;
    llvm_cbe_return:
      return;
    }
    
    
    static void __tcf_0(unsigned char *llvm_cbe_unnamed_arg) {
      unsigned char *llvm_cbe_unnamed_arg_addr;    /* Address-exposed local */
      unsigned int llvm_cbe_alloca_20_point;
    
      llvm_cbe_alloca_20_point = ((unsigned int )0u);
      *(&llvm_cbe_unnamed_arg_addr) = llvm_cbe_unnamed_arg;
      _ZNSt8ios_base4InitD1Ev((&_ZStL8__ioinit));
      return;
    }
    Вот такое вот страшилище за 2011-й год. Может, сейчас чуть лучше стало? :)

    http://llvm.org/releases/3.5.0/LLVM-3.5.0-win32.exe
     
  3. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Ну чё, сдулись, программеры? wxWidgets рулит, qt - отстой!

    ---------- Сообщение добавлено в 14:45 ---------- Предыдущее сообщение размещено в 14:45 ----------

    A.P.$lasH, БТП!!! Отпередил!
     
  4. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    тоже отстой. Ортодоксальный цы первой редакции рулит.
     
  5. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Ого! Впечатляет. Но что-то в этом есть... :-
    Не, мне больше по вкусу предпоследний, Си-99. В последнем появились привкусы Паскаля, а я его никогда не любил.)
    И stdlib, конечно.
     
  6. gudleifr

    gudleifr

    Регистрация:
    16 сен 2006
    Сообщения:
    2.592
    Это, как раз худшее из двух зол - подход, объединяющий их обоих - понимания и промежуточного языка - недостатки.

    Очевидно, что и понимание строки 'std::cout << "foo" << std::endl;' дало бы 'puts("foo\n");' и анализ в кодах дал бы что-то похожее.
     
    Bato-San нравится это.
  7. A.P.$lasH

    A.P.$lasH

    Legacy

    Регистрация:
    27 фев 2010
    Сообщения:
    4.667
    Голосование подошло к концу. С отрывом в три голоса победил вариант "Пожалуйста, оставьте как есть".

    Я, если что, не голосовал.
     
  8. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    gudleifr, ну, если не считать, что std::endl делает ещё и std::flush, сбрасывая буфера. Что влияет на время исполнения и дополняет код новыми подробностями.

    A.P.$lasH, вообще то ничья, ибо верхние два варианта по сути одно и тоже и оба принадлежат мне. Но, если хочешь - проголосуй. А вообще да - надо было открытое голосование делать. :)
     
    Последнее редактирование: 25 ноя 2014
  9. gudleifr

    gudleifr

    Регистрация:
    16 сен 2006
    Сообщения:
    2.592
    Да, старею, "\n"? puts не нужен - он сам "делает flush". Но мыслите правильно, является здесь это паразитной или полезной особенностью C++ кода - нам не ведомо (как, скорее всего, и самому C++ писателю).
     
  10. R4kk00n Benched arcade playa

    R4kk00n

    Модератор

    Регистрация:
    28 мар 2005
    Сообщения:
    9.292
    Про LLVM где-то писали, что в последние годы трансляция в C выключена, потому что результат слишком страшный получается.
     
    Bato-San нравится это.
  11. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Нууу, это ты загнул - обычно настолько плохо не бывает. Но базовая идея подмечена верно: C++ стимулирует разделение труда, а из него уже следует выгодность набирать низкоквалифицированную рабсилу. :-(
     
    Взрывастер нравится это.
  12. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Рыжий Тигра, я к тому, что стиль - это дело криворукости программиста. На C точно так же можно писать говнокод, не более понятный, чем говнокод на С++.
     
  13. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Хуже. "Корпоративный стиль" - обычно "разрабатывается" (если тут это слово уместно) не программистами, а начальником, а то и приглашённым со стороны спецом по "системам менеджмента качества" документооборота (ISO 9001, ага). Не, ну программисты-"одиночники" (которые ведут проект самостоятельно, а не толпой в десятки человек), конечно, могут на "корпоративный стиль" и положить; но вот парадокс - "одиночники", как правило, не заморачиваются написанием классов и их использованием, а юзают старую добрую процедурность. А это как раз Си.
    А вот сишников в проектах на десятки человек использовать нерентабельно - надо чтобы все были квалифицированными, а таковы не все. Поэтому C++ и на одного недешёвого грамотного классостроителя десяток дешёвых неграмотных классоюзателей.
    Так жертвами внедрённого с подачи спецов по документообороту "стиля" становятся именно плюсплюсники. :-(
    Авотфиг. Куча порождённых говнокодом вещей, приводящих к краху программы, в Си при компиляции сопровождаются предупреждениями (указатели не на тот тип, неинициализированные переменные итд), а в C++ это конкретно ошибки. Поэтому сишный говнокод вымирает чуть ли не в момент зарождения, а C++'ный отлично здравствует, после, конечно, тщательного выкорчёвывания его последствий - но не причины: общей говняности кода. :-(
     
    Последнее редактирование: 21 дек 2014
  14. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Не вижу смысла спорить с сИктантом. =)
     
  15. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    (гордо задрав хвост) Уж каков есть. :-)
     
  16. hobot Оператор ДВК.

    hobot

    Регистрация:
    6 авг 2009
    Сообщения:
    1.777
    ...снова вклинюсь, может не совсем точно по теме(как и в прошлый раз),но вот вы как программеры, можете сами озвучить\вспомнить - когда стало нормой патчить игровые релизы? Я вот сейчас один из таких вариантов для меня самых ранних вспоминается
    второй Орион, Хэлф-Лайф1 с Контр-Страйком и СтарКрафт1 - все гонялись за определёнными версиями этих игрушек. А сейчас это нормал - сырые продукты выпускать, что приводит к этому? Разнообразие железа? Необозримый листинг программы? Или всё таки мастерство одиночек >>>> командной работы.

    Вот пример когда на 800кб носителе умещалось до 40 игр.
    Один или Двое рисовали спрайты.
    Один или Двое кодили.
    Тестировали все желающие.
    Оптимизация шла - изнутри - код затачивался под особенности железяки.

    Что мешает (увеличив в каждой группе людей) работать в подобном стиле сейчас и
    не выпускать релизов, которые на рабочий стол вылетают (!) - но сейчас это норма!!!
    Кто прокомментирует?

    Спасибо.
     
  17. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Где-то в момент отхода от ЕСок и СМок в сторону персоналок. Во всяком случае, на ЕСках аж до самого их конца (конец 80-х - начало 90-х) ни одной изначально глюкавой программы за пределами виртуальной машины её автора не помню.
    Сроки?
     
    hobot нравится это.
  18. Alex Kagansky

    Alex Kagansky

    Регистрация:
    17 дек 2007
    Сообщения:
    3.054
    В С++ все те же предупреждения есть, и еще в 100 раз больше других.

    В голом Ц простор для говнокода в миллион раз больше, просто даже из-за отсутствия высокоуровневых абстракций.
     
    Steel Rat нравится это.
  19. gudleifr

    gudleifr

    Регистрация:
    16 сен 2006
    Сообщения:
    2.592
    В 70-е годы проблему сформулировал Дейкстра: размер программы является главным мерилом ее сложности. По сравнению с этой сложностью, сложность отдельных технических решений роли практически не играет. И никаких способов обойти эту сложность нет.
    Примерно тогда же Брукс показал, почему нельзя просто увеличивать группу программистов: время на обмен нужными данными быстро превысит время полезной работы.

    Можно, конечно рассматривать разные обходные пути, но, во-первых, они дают очень малый выигрыш при большом напряге, во-вторых, это далеко нас заведет (однажды уже пытались это обсуждать). Просто запомните: граница сложности, недопускающая дальнейшее развитие программирования, была достигнута в 70-е. С тех пор идет накопление мусора и реализация того, что можно сделать, вместо того, что сделать нужно.
     
    Последнее редактирование: 21 дек 2014
    hobot нравится это.
  20. hobot Оператор ДВК.

    hobot

    Регистрация:
    6 авг 2009
    Сообщения:
    1.777
    А раньше сроков не ставили разве? Это одна из причин, но вот вспомните насколько
    качественным вышел STARCRAFT-II - политика компании, выйдет тогда когда будет готов.
    Конечно с такой игрой они могут себе позволить и рождество пропустить, ибо весь тираж
    по определению будет куплен, но они и планку качества держат там где надо.

    Ну хорошо, одна из причин
    СРОКИ.

    Неужели нет ни одной проблемы чисто цеховой - о которой просто не принято
    говорить ? Или которую сами участники считают очевидной в отличие от тех,
    кому пытаются продавать глючные релизы ??? Современные игры отлаживают
    после продажи чуть ли не годами - но ведь не все MASS EFECT - порт?сомнительная
    игра для некоторых, но он идеально работает с момента выхода. - это пример из недавнего "без патчей" игро-строения (не единственный конечно).
    Единственный патч - "смайл" - отучение от болванок )))

    ---------- Сообщение добавлено в 19:23 ---------- Предыдущее сообщение размещено в 19:20 ----------

    gudleifr, когда печатал вашего поста ещё не читал, принято.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление