**special [#xcb4453c]

 ✘╹◡╹✘ 

✘╹◡╹✘

**dir-locals.el for flymake [#wd84b24c]
 ((c++-mode . ((flymake-additional-compilation-flags . ("-I<include_path>")))))

**flymake [#h72f9902]
 (defun my:flymake-lazy-start ()
   ;; To use file (directory) local variables in flymake,
   ;; run flymake lazily
   (lexical-let ((target-buffer (current-buffer)))
     (run-at-time
      0.001 nil
      (lambda ()
        (with-current-buffer target-buffer
          (when buffer-file-name (flymake-mode t)))))))
 
 (add-hook 'c-mode-hook 'my:flymake-lazy-start)
 (add-hook 'c++-mode-hook 'my:flymake-lazy-start)

 (defvar flymake-additional-compilation-flags nil)
 (put 'flymake-additional-compilation-flags 'safe-local-variable 'listp)
  
 (defvar my-flymake-c-compiler "gcc")
 (defvar my-flymake-cc-compiler "g++")
 (put 'my-flymake-c-compiler 'safe-local-variable 'stringp)
 (put 'my-flymake-cc-compiler 'safe-local-variable 'stringp)
  
 (defun flymake-cc-init ()
   (let* ((temp-file (flymake-init-create-temp-buffer-copy
                      'flymake-create-temp-inplace))
          (local-file (file-relative-name
                       temp-file
                       (file-name-directory buffer-file-name)))
          (common-args (append (list "-Wall" "-W" "-fsyntax-only" local-file)
                               flymake-additional-compilation-flags)))
     (if (eq major-mode 'c++-mode)
         (list my-flymake-cc-compiler common-args)
       (list my-flymake-c-compiler common-args))))
 
 (loop for ext in '("\\.c$" "\\.h$" "\\.cc$" "\\.cpp$" "\\.hh$")
       do
       (push `(,ext flymake-cc-init) flymake-allowed-file-name-masks))

**pthread [#s65310f9]

 #include <list>
 #include <iostream>
 #include <pthread.h>
 #include <functional>
 
 class Runner {
     int id_;
     pthread_t thread_;
 
 public:
     Runner(int id): id_(id) {
         pthread_create(&thread_,
                        NULL,
                        reinterpret_cast<void* (*) (void*)>(&Runner::start_runner),
                        reinterpret_cast<void*>(this));
         pthread_join(thread_, NULL);
     }
 
     void start() {
         std::cout << "My id is " << id_ << std::endl;
     }
 
     static void* start_runner(void* runner) {
         reinterpret_cast<Runner*>(runner)->start();
     }
 };
 
 class Manager {
     typedef std::list<Runner> RunnerList;
 
     RunnerList runner_list_;
 
 public:
     Manager() {
         //
     }
 
     void add_runner() {
         runner_list_.push_back(Runner(runner_list_.size()));
     }
 
     void wait() {
     }
 };
 
 int main(int argc, char **argv)
 {
     Manager manager;
 
     manager.add_runner();
     manager.add_runner();
     manager.add_runner();
 
     return 0;
 }

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS