r5 - 27 Mar 2005 - 17:04:00 - Artem PervinYou are here: TWiki >  OPENTS Web > ЧаВО > TfunMainDefinition

Функцию main, с которой начинается выполнение программа на языке Т++, следует определять в форме:

tfun int main(int argc, char* argv[])
{
...
}

Определение функции main в другой форме не рекомендуется. В частности, определение main в форме:

tfun int main()
{
...
}

в текущей (3.0) версии OpenTS может приводить к ошибке времени выполнения (segmentation fault):


versus@skif:~/work/t++_tests/faq/tfunmain>./a.out 
Open T-System Runtime v3.0, 2003-2004, PSI RAS, Russia.
Running under unicomputer MPI on 1-rank cluster:
  [3.3Gf,3322BM,0.86GiB]
Starting tfun main, good luck!

WAD: Collecting debugging information...
WAD: Segmentation fault.
#15  0x08049fd9 in ?()
#14  0x401dfa67 in __libc_start_main()
#13  0x0804c3f9 in unsigned long()
#12  0x0804aba5 in ts::start_threads(void* (*)(void*), int)()
#11  0x0804be55 in ts::thread_worker(void*)()
#10  0x08050afd in ts::Service::doAllWork()()
#9   0x0805ec46 in ts::MacroScheduler::work()()
#8   0x080626da in ts::MacroScheduler::runLocalTasks()()
#7   0x08050c34 in ts::ThrH::yield(ts::ThrH*)()
#6   0x0804b403 in ts::ThrH::hwSaveRestore(ts::ThrH*, ts::ThrH*, void*)()
#5   0x0804b7cd in ts::SThread::newTask(ts::SThread*)()
#4   0x08070abe in ts::TFun::work()(this=0x9226f5c)
              ~ in , at line 5075
#3   0x0806ab24 in tfunmainTFunImpl::body()(this=0x9226f5c)
              ~ in , at line 93
#2   0x0806c5d0 in init_common_variables()()
              ~ in , at line 751
#1   0x4023d201 in __malloc()
#0   0x4023e2b5 in _int_malloc()
Segmentation fault

Верно только для конвертера t++. Используйте компилятор tg++!

Попытки объявить функцию main без ключевого слова tfun и/или с отличным от int возвращаемым значением вызовут ошибку на этапе компиляции:


versus@skif:~/work/t++_tests/faq/tfunmain>t++ tfunmain.tcc
T++->(C++,TSS) Converter v3.0, 2003-2004, PSI RAS, Russia.
WARNING: main *is not* declared as tfunction!
tfunmain.tcc:4: `main' must return `int'
tfunmain.tcc:4: return type for `main' changed to `int'
tfunmain.tcc: In function `int main(...)':
tfunmain.tcc:4: declaration of C function `int main(...)' conflicts with
/home/versus/openTS/opentss/trt:5288: previous declaration `int main(int, 
   char**)' here

-- Artem Pervin - 27 Mar 2005

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r5 < r4 < r3 < r2 < r1 | More topic actions
 
Powered by TWiki

This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback