C++ лучший способ определить константы перекрестного файла

Вы можете добавить PARTITION BY symbol, а затем использовать его в предложении where для расчета для каждого символа.

create or replace function update_sma8() RETURNS TRIGGER AS
$
 BEGIN

 UPDATE day d SET sma8 = s.simple_mov_avg 
 FROM
 (
  SELECT  sec.date,sec.symbol,AVG(sec.close)  
    OVER( partition by symbol ORDER BY sec.date ROWS BETWEEN 
                          7 PRECEDING AND CURRENT ROW) AS 
     simple_mov_avg FROM day sec
 )s where s.date = NEW.date  --The newly inserted date
      AND d.date = s.date   
      AND d.symbol = s.symbol;
  RETURN NULL;
 END $ language plpgsql;

ДЕМО

10
задан rlbond 13 March 2009 в 03:45
поделиться

8 ответов

Избавьтесь от extern и Вы установлены.

Эти работы кода, превосходные в заголовке, потому что все "действительно постоянно" и поэтому имеет внутреннюю связь:

const int BEGINNING_HEALTH = 10;
const int BEGINNING_MANA = 5;
const char BEGINNING_NAME[] = "Fred";
const char *const BEGINNING_NAME2 = "Barney";

Этот код не может безопасно быть помещен в заголовочный файл, потому что каждая строка имеет внешнюю связь (или явно или из-за того, чтобы не быть действительно постоянным):

extern const int BEGINNING_HEALTH = 10;
extern const int BEGINNING_MANA = 5;
const char *BEGINNING_NAME = "Wilma";  // the characters are const, but the pointer isn't
19
ответ дан 3 December 2019 в 14:54
поделиться

Как насчет перечислений?

constants.hpp

  enum {
    BEGINNING_HEALTH = 10,
    BEGINNING_MANA = 5
  }
10
ответ дан 3 December 2019 в 14:54
поделиться

Используйте "статический интервал константы" в Вашем .hpp файле, и ничего не поместите в .cpp файл (кроме того, что другой код Вы имеете там, конечно).

6
ответ дан 3 December 2019 в 14:54
поделиться

используйте пространства имен:

namespace GameBeginning {
    const int HEALTH = 10;
    const int MANA   = 5; 
};

затем можно использовать в качестве player.health = GameBeginning:: ЗДОРОВЬЕ;

3
ответ дан 3 December 2019 в 14:54
поделиться

Большинство компиляторов просто не выделяет место для константы значения POD. Они оптимизируют их и рассматривают их, как будто они были #defined, не так ли?

0
ответ дан 3 December 2019 в 14:54
поделиться

Что когда-либо происходило с простым:

#define BEGINNING_HEALTH 10

Человек, это были дни.
О, ожидайте, это все еще - дни!

0
ответ дан 3 December 2019 в 14:54
поделиться

возможно, что-то вроде статического класса?

class CONSTANTS {
public:
static inline int getMana() { return 10;};
};
-2
ответ дан 3 December 2019 в 14:54
поделиться

Как быстрый ответ на вопрос о заголовке, шаблоном "одиночка" является возможный лучший, C++ способ определить константы перекрестного файла и обеспечить только один экземпляр объекта.

До шаблонной проблемы параметра необходимо передать тип не значение. Ваш тип является "интервалом".

-5
ответ дан 3 December 2019 в 14:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: