# Defining constants used in both .cpp and .ts?

**URL:** https://forum.makecode.com/t/defining-constants-used-in-both-cpp-and-ts/2025
**Category:** micro:bit
**Created:** [May 9, 2020, 9:07pm UTC](https://forum.makecode.com/t/defining-constants-used-in-both-cpp-and-ts/2025 "2020-05-09T21:07:02Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![mkilpatr](https://avatars.discourse-cdn.com/v4/letter/m/ccd318/32.png) [@mkilpatr](https://forum.makecode.com/u/mkilpatr)
#### Post date: [May 9, 2020, 9:07pm UTC](https://forum.makecode.com/t/defining-constants-used-in-both-cpp-and-ts/2025/1 "2020-05-09T21:07:02Z")

</div>

I don’t fully understand how the .ts, .h and .cpp files are sewn together and how best to declare a constant, let’s say` LPWIDTH = 6` which I would like to use within both a .ts file and a .cpp file of an extension I would like to write, with its own namespace. Do I have to declare it separately? The constant won’t need to be referred to outside the extension by the calling code.

And what if I want another constant which is` DigitalPin.P16` so that I can use the name `RST_PIN` rather than refer directly to the pin number either in Typescript or C?

And let’s say I have another constant which is, say, an `enum animals { Dog = 1, Cat =2 }` etc which I wish to used as a drop-down list in a Makecode block and which I will also want to use within the cpp file, the ts file of the extension, and also visible to the external code.

I understand how to make a block work with the drop-down list, by putting this at the top of the .ts of the extension and outside the `namespace {}`:

```
enum Animals {
//% block="dog"
Dog = 1,
//% block="cat
Cat = 2
}

```

and so on, and creating a shim function to use with the blocks that require the drop-down list. I think I may want to have this visible within to C code.

Lastly, what exactly does` declare const` do which `const` doesn’t?

Michael
